上文讲到二叉树的一些遍历和高度,今天讲讲二叉树的路径与价值问题。
1、二叉树中和为某一值的路径
给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。
1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
2.叶子节点是指没有子节点的节点
3.路径只能从父节点到子节点,不能从子节点到父节点
4.总节点数目为n
例如:
{5,4,8,1,11,#,9,#,#,2,7},22
// true
思路:必须从根节点到每个叶节点,和值进行比较,如果存在某个分支和值相等,保存true
到最终结果。
function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
}
function recursion(s, node, sum, bool) {
s += node.val
if (!node.left && !node.right) { // 叶节点
return s === sum
}
// 使用 || 来获取任何一个true,否则false
if (node.left) {
bool = bool || recursion(s, node.left, sum)
}
if (node.right) {
bool = bool || recursion(s, node.right, sum)
}
return bool
}
/**
* @param root TreeNode类
*