leetcode中等513找树左下角的值

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等513找树左下角的值相关的知识,希望对你有一定的参考价值。

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

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

思路一:层序遍历

class Solution {
    public int findBottomLeftValue(TreeNode root) {
        if(root==null) return 0;
        List<TreeNode>que=new ArrayList<>();
        que.add(root);
        int res=0;//每一行最左边
        while(que.size()!=0){
            int l=que.size();
            for(int i=0;i<l;i++){
                TreeNode node=que.remove(0);
                if(i==0) res=node.val;
                if(node.left!=null) que.add(node.left);
                if(node.right!=null) que.add(node.right); 
            }
        }
        return res;
    }
}

思路二:回溯

1、正常回溯

class Solution {
    public int maxDeep=-1;
    public int res=0;
    public int findBottomLeftValue(TreeNode root) {
        res=root.val;
        find(root,0);
        return res;
    }
    public void find(TreeNode root,int deep){
        if(root==null) return;
        if(root.left==null && root.right==null){
            if(deep>maxDeep){
                maxDeep=deep;
                res=root.val;
            }
        }
        if(root.left!=null){
            deep++;
            find(root.left,deep);
            deep--;//回溯
        }
        if(root.right!=null){
            deep++;
            find(root.right,deep);
            deep--;
        }
    }
}

2、函数参数里隐藏回溯

class Solution {
    public int maxDeep=-1;
    public int res=0;
    public int findBottomLeftValue(TreeNode root) {
        res=root.val;
        find(root,0);
        return res;
    }
    public void find(TreeNode root,int deep){
        if(root==null) return;
        if(root.left==null && root.right==null){
            if(deep>maxDeep){
                maxDeep=deep;
                res=root.val;
            }
        }
        //回溯直接放进参数里
        if(root.left!=null){
            find(root.left,deep+1);//不能deep++!!!
        }
        if(root.right!=null){
            find(root.right,deep+1);
        }
    }
}

以上是关于leetcode中等513找树左下角的值的主要内容,如果未能解决你的问题,请参考以下文章

Python描述 LeetCode 513. 找树左下角的值

LeetCode 513 找树左下角的值[BFS 二叉树] HERODING的LeetCode之路

Python描述 LeetCode 513. 找树左下角的值

Python描述 LeetCode 513. 找树左下角的值

Leetcode: 513. 找树左下角的值

513. 找树左下角的值