代码随想录算法训练营第15天|二叉树Part03

代码随想录算法训练营第15天|二叉树Part03

记录题目:

  • 路径总和
  • 路径总和 II
  • 二叉树的最近公共祖先

如何判断递归函数是否需要返回值?

  • 如果要搜索其中一条符合条件的路径,那么递归一定需要返回值, 因为遇到符合条件的路径了就要及时返回,通常可以用布尔类型表示。

  • 如果需要搜索整棵二叉树不用处理递归返回值,递归函数就不要返回值。

  • 如果需要搜索整棵二叉树需要处理递归返回值,递归函数就需要返回值。

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

返回值为布尔类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @param {TreeNode} root
* @param {number} targetSum
* @return {boolean}
*/
let hasPathSum = function (root, targetSum) {
if (!root) return false;
// 当前节点是叶子节点,检查路径和是否正好为 targetSum
if (!root.left && !root.right && root.val === targetSum) return true;
// 向左右子树递归查找
return hasPathSum(root.left, targetSum - root.val) ||
hasPathSum(root.right, targetSum - root.val);
};
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×