Java同学的面试算法学习 9

58 阅读1分钟

二叉树中和为某一值的路径(一)

做了这个题感觉又进一步体会到了二叉树这种数据结构的秒,埃,这么简单的题都是看题解才得以解决,话不多说,直接开始书写

题目描述

image-20240116212630618

image-20240116212645382

image-20240116212705356

image-20240116212716029

解决思路

利用二叉树的数据结构特征,递归解题,首先判断根节点,然后递归判断左右子树是否有有效路径

代码

import java.util.*;
public class Solution {
    public boolean hasPathSum (TreeNode root, int sum) {
        //空节点找不到路径
        if(root == null) 
            return false;
        //叶子节点,且路径和为sum
        if(root.left == null && root.right == null && sum - root.val == 0) 
            return true;
        //递归进入子节点
        return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); 
    }
}

收获与总结

  1. 解题时要考虑是否能利用数据结构的特殊性,如:可以将问题细化到左子树和右子树是否有答案
  2. root.left要将其看成左子树,而不是仅仅看成一个左节点来看待