|

楼主 |
发表于 2019-6-28 14:12:59
|
显示全部楼层
本帖最后由 风扫地 于 2019-6-28 14:14 编辑
常规的递归算法进行路径搜索。
- bool g_ret_val = false;
- int g_sum = 0;
- void __path_sum(struct TreeNode* p , int cur_sum)
- {
-
- if(p==NULL)
- {
- return ;
- }
-
- cur_sum += p->val;
- if( (p->left==NULL)
- &&(p->right==NULL) /*必须是叶子节点才进行判断*/
- )
- {
- if(cur_sum == g_sum)
- {
- g_ret_val = true;
- }
- }
- if(!g_ret_val)
- {
- __path_sum(p->left,cur_sum);
- }
-
- if(!g_ret_val)
- {
- __path_sum(p->right,cur_sum);
- }
- return ;
- }
- bool hasPathSum(struct TreeNode* root, int sum)
- {
- g_ret_val = false;
- g_sum = sum;
-
- if(root!=NULL)
- {
- __path_sum(root,0);
- }
- return g_ret_val;
- }
复制代码 |
|