leetcode 513. 找树左下角的值

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

示例 1:

输入:

2
/ \
1 3

输出:
1
 

示例 2:

输入:

1
/ \
2 3
/ / \
4 5 6
/
7

输出:
7
 

注意: 您可以假设树(即给定的根节点)不为 NULL。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

层序遍历,用两个队列来记录每一层的数据,遇到最后一层,返回第一个节点的值。

    public int findBottomLeftValue(TreeNode root) {
        Queue<TreeNode> a = new ArrayDeque<>();
        Queue<TreeNode> b = new ArrayDeque<>();
        a.add(root);
        while (!a.isEmpty() ) {
            TreeNode first = ((ArrayDeque<TreeNode>) a).getFirst();
            while (!a.isEmpty()) {
                TreeNode poll = a.poll();
                if (poll.left != null) {
                    b.add(poll.left);
                }
                if (poll.right != null) {
                    b.add(poll.right);
                }
            }
            if (b.isEmpty()) {
                return first.val;
            }
            a = b;
            b = new ArrayDeque<>();
        }
        return 0;
    }

posted @ 2021-05-11 14:22  旺仔古李  阅读(44)  评论(0编辑  收藏  举报