二叉树中和为某一值的路径(一)
做了这个题感觉又进一步体会到了二叉树这种数据结构的秒,埃,这么简单的题都是看题解才得以解决,话不多说,直接开始书写
题目描述
解决思路
利用二叉树的数据结构特征,递归解题,首先判断根节点,然后递归判断左右子树是否有有效路径
代码
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);
}
}
收获与总结
- 解题时要考虑是否能利用数据结构的特殊性,如:可以将问题细化到左子树和右子树是否有答案
- root.left要将其看成左子树,而不是仅仅看成一个左节点来看待