前言
最近在刷leetcode的关于二叉树的题目,碰到几题关于二叉树节点的问题。在这里做一个小结记录自己的理解和知识的长进。
leetcode问题
思路总结
前序
关于二叉树根节点到叶子节点路径问题,最容易想到的就是打印二叉树所有根节点到叶子节点的路径。这个很容易,就是以二叉树的前序遍历为基础,在遍历过程中记录遍历的节点然后碰到叶子节点就输出结果。代码如下:
public static void printAllPath(TreeNode root,String s) {
if(root==null){
return;
}
s += root.val+ " ";
if(root.left==null&&root.right==null) {
System.out.println(s.trim().replaceAll(" ","->"));
}
printAllPath(root.left,s);
printAllPath(root.right,s);
}
问题一
那么仿照前序中提到的打印问题,我们只需要在递归过程中记录路径的之和,最后在叶子节点处做一次判断即可。代码如下:
路径总和问题
class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
return hasPath(root, 0, sum);
}
private boolean hasPath(TreeNode root, int curSum, int sum){
if