404.左叶子之和

计算给定二叉树的所有左叶子之和。

示例:

3
/ \
9 20
/ \
15 7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

class Solution {
    int pathSum;
    public int sumOfLeftLeaves(TreeNode root) {
        if(root==null){
            return 0;
        }
        if(root.left==null && root.right==null){
            return 0;
        }
        TreeNode left=root.left;
        if(left!=null && left.left==null && left.right==null){
             pathSum+=left.val;
        }
        sumOfLeftLeaves(root.left);
        sumOfLeftLeaves(root.right);
        return pathSum;

    }
}

  

public int sumOfLeftLeaves(TreeNode root) {
        if(root==null){
            return 0;
        }
        if(root.left==null && root.right==null){
            return 0;
        }
        TreeNode left=root.left;
        int res=0;
        if(left!=null && left.left==null && left.right==null){
             res+=left.val;
        }
    
        return sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right)+res;

    }

  

513. 找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

 

示例 1:

 

 

 

输入: root = [2,1,3]
输出: 1
示例 2:

 

 

 

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

思路:层序遍历

class Solution {
    public int findBottomLeftValue(TreeNode root) {
        TreeNode cur=root;
        LinkedList<TreeNode> queue=new LinkedList<>();
        queue.add(cur);
        int curLevel=0;
        int lastVal=0;
        HashMap<TreeNode,Integer> levelMap=new HashMap<>();
        levelMap.put(root,1);
        
        while(!queue.isEmpty()){
            cur=queue.poll();
            int level=levelMap.get(cur);
            if(level!=curLevel){
                lastVal=cur.val;
                curLevel++;
            }
            if(cur.left!=null){
                queue.add(cur.left);
                levelMap.put(cur.left,level+1);
            }

            if(cur.right!=null){
                queue.add(cur.right);
                levelMap.put(cur.right,level+1);
            }
        }
        return lastVal;
    }
}

  

 public int findBottomLeftValue(TreeNode root) {
        LinkedList<TreeNode> queue=new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            root=queue.poll();
            if(root.right!=null){
                queue.add(root.right);
            }
            if(root.left!=null){
                queue.add(root.left);
            }         
        }
        return root.val;
    }

  

posted @ 2021-10-09 09:36  sherry001  阅读(7)  评论(0编辑  收藏  举报