问题描述
给定一个二叉树、一个数字,判断是否存在一条从根节点
到叶节点的路径上的数字总和等于给定数字。
如:给定如下二叉树,以及数字22,判断是否存在某条路
径满足上述条件
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
算法描述
最直接的方式就是使用递归方法去遍历每一条边,进行求
和计算,查找出满足条件的路径。
代码
public static boolean hasPathSumRecursion(TreeNode root, int sum) {
if(root == null) {
return false;
}
sum -= root.val;
if ((root.left == null) && (root.right == null))
return (sum == 0);
return hasPathSumRecursion(root.left,sum) || hasPathSumRecursion(root.right,sum);
}
复杂度
时间复杂度:O(N)
空间复杂度:
完全不平衡二叉树 - O(N)
平衡二叉树 - O(log(N))