南通网站建设方案开发,网站制作厂家电话多少,海口网站建设工作,长沙人才市场招聘信息牛客题霸 [二叉树中是否存在节点和为指定值的路径] C题解/答案
题目描述
给定一个二叉树和一个值\ sum sum#xff0c;判断是否有从根节点到叶子节点的节点值之和等于\ sum sum 的路径#xff0c; 例如#xff1a; 给出如下的二叉树#xff0c;\ sum22 sum22#xff0c;…牛客题霸 [二叉树中是否存在节点和为指定值的路径] C题解/答案
题目描述
给定一个二叉树和一个值\ sum sum判断是否有从根节点到叶子节点的节点值之和等于\ sum sum 的路径 例如 给出如下的二叉树\ sum22 sum22
返回true因为存在一条路径 5\to 4\to 11\to 25→4→11→2的节点值之和为 22
题解
不断递归左右子树递归过程中不断用sum-当前节点的值到叶子节点的是否特判sum减去叶子节点是否为0 注意要先判断root是否为NULL再判断左右子树的情况否则会段错误
代码
/*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/class Solution {
public:/*** * param root TreeNode类 * param sum int整型 * return bool布尔型*/bool hasPathSum(TreeNode* root, int sum) {// write code hereif(rootNULL)return 0;if(root-leftNULLroot-rightNULLsum-(root-val)0)return 1;return hasPathSum(root-left,sum-(root-val))||hasPathSum(root-right,sum-(root-val));}
};