找树左下角的值

513.找树左下角的值

给定一个二叉树,在树的最后一行找到最左边的值。

示例 1:

图片

示例 2:

图片

思路

递归

二叉树左边最大深度的最左边值,就是我们要找的值

定义两个全局静态变量,记录左边的最大深度和记录左边最大深度的值

利用前序遍历的方式,当传入的深度值大于定义的值时,记录下当前的最大深度值

向左子树递归;向右子树递归

层序遍历

当找到最底层的最左边值时,传递给结果返回就可以

代码

//递归实现
private static   int maxLen=-1;
  private static int leftValue=0;
  public static void leftValueR(Node root,int leftNum){
        if(root == null) return;
        if(leftNum>maxLen){
            maxLen = leftNum;
            leftValue = root.val;
        }
        if(root.left!=null){
            leftValueR(root.left,leftNum+1);
        }
        if(root.right!=null){
            leftValueR(root.right,leftNum+1);
        }

    }

//层序遍历实现
public static int leftValueR2(Node root){
        if (root==null) return 0;
        Queue<Node> queue = new ArrayDeque<>();
        queue.add(root);
        int result=0;
        while(!queue.isEmpty()){
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                Node temp = queue.poll();
                if(i == 0){
                    result = temp.val;
                }
                if(temp.left!=null){
                    queue.add(temp.left);
                }
                if(temp.left!=null){
                    queue.add(temp.right);
                }
            }
        }
        return result;
    }

posted @ 2021-04-15 11:30  胡木杨  阅读(56)  评论(0)    收藏  举报