【一天一道LeetCode】#112. Path Sum
2016-07-01 21:03
429 查看
一天一道LeetCode
本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处
(一)题目
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.For example:
Given the below binary tree and sum = 22,
5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
(二)解题
题目大意:给定一个二叉树和一个整数,求二叉树是否存在一个根节点到叶子节点的路径,使得该路径上的所有节点的值加起来等于该整数。解题思路:递归,碰到叶子节点就算路径上的节点值的和,判断等不等于该整数。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool hasPathSum(TreeNode* root, int sum) { if(root==NULL) return false;//树为空返回false bool flag = false; dfsTree(root,sum,0,flag);//递归函数 return flag; } //sum为要求的路径和 //cur为当前路径和 //flag为是否满足cur==sum void dfsTree(TreeNode* root, int& sum,int cur,bool& flag) { if(root->left == NULL && root->right==NULL) if(!flag) flag=(sum==(cur+root->val));//此时为叶子节点,判断路径和等不等于sum if(root->left!=NULL) dfsTree(root->left,sum,cur+root->val,flag);//往左子树搜索 if(root->right!=NULL) dfsTree(root->right,sum,cur+root->val,flag);//往右子树搜索 } };
相关文章推荐
- Android之使用Http协议实现文件上传功能
- 查看github pages文档的方式
- 使用BAE的基于Web.py的简单博客程序
- 菜鸟说给菜鸟听之Beginning Linux Programming——Chapter1(1)
- sqlserver FOR XML PATH 语句的应用
- 两分钟学会如何在github托管代码
- set_include_path在win和linux下的区别
- 浅析Cookie中的Path与domain
- cookie中的path与domain属性详解
- PHP include_path设置技巧分享
- NodeJS学习笔记之(Url,QueryString,Path)模块
- Android自定义View实现仿GitHub的提交活跃表格
- 浅析JAVA_HOME,CLASSPATH和PATH的作用
- Python中os.path用法分析
- github配置使用指南
- github版本库使用详细图文教程(命令行及图形界面版)
- python使用心得之获得github代码库列表
- nginx中path模式配置示例
- C语言实现的轻量级brainfuck语言解释器