本文共 1172 字,大约阅读时间需要 3 分钟。
要解决这个问题,我们需要判断是否存在一条从二叉树根节点到叶节点的路径,使得路径上的节点值之和恰好等于给定的数值 ( x )。我们可以通过递归方法来解决这个问题。
我们可以使用递归来遍历二叉树,每个节点沿着路径累加值,检查是否存在一条路径满足条件。具体步骤如下:
false。true,否则返回 false。true。true,则直接返回 true,避免检查右子树。public class Solution { public boolean pathSum(TreeNode root, int sum) { if (root == null) { return false; } if (root.left == null && root.right == null) { return root.val == sum; } // 先检查左子树 boolean leftResult = pathSum(root.left, sum - root.val); if (leftResult) { return true; } // 再检查右子树 return pathSum(root.right, sum - root.val); }}public class TreeNode { int val; TreeNode left, right; public TreeNode(int val) { this.val = val; }} sum 作为参数。false。如果当前节点是叶子节点,检查其值是否等于 sum。true。否则,继续检查右子树。这种方法的时间复杂度为 ( O(n) ),空间复杂度为 ( O(h) ),其中 ( n ) 是节点总数,( h ) 是树的高度。这种递归方法直观且高效,能够有效地解决问题。
转载地址:http://zqds.baihongyu.com/