标签:
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.
从Root结点->遍历到叶子结点 找出sum跟遍历的总和相同 返回真 or 假
Leetcode
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ bool hasPathSum(TreeNode *root, int sum) { return PathSum(root,sum,0); } bool PathSum(TreeNode *root,int sum,int val) { if(root==NULL) return false;//如果给出的根节点为空则返回假 当递归到 树的第三层 4的时候 会触发FALSE val+=root->val;//不为空 则将当前递归 节点的val 值进行+=操作 if(root-left== NULL&&root->right==NULL)//递归到叶子结点 { if(sum==val) return true; else false; } return PathSum(root->left,sum,val)||PathSum(root->right,sum,val);//如果当前递归到非叶子结点 则继续递归调用 结点的 左 右 两个孩子结点 }
广度 深度 搜索 的变化 还是多样的 要多多了解这些思想 跟方法
标签:
原文地址:http://www.cnblogs.com/anfly/p/4659223.html