Question 513-find bottom left tree value

解题思路

普通的广度优先搜索。不同的是广度优先搜素运用在这个问题上时,需要记得:搜索离 root 节点距离相同的一批节点时,要遵循先搜右边的,再搜左边的。这样,我们最后搜索得到的就是最左下角的节点。

代码

class Solution {
    public int findBottomLeftValue(TreeNode root) {
        
        Queue<TreeNode> nodes = new LinkedList<>();
        nodes.offer(root);

        while(!nodes.isEmpty()) {

            for (int i = 0; i < nodes.size(); i ++) {

                TreeNode node = nodes.poll();
                if (nodes.isEmpty() && node.left == null && node.right == null) {
                    return node.val;
                }
                if (node.right != null) {
                    nodes.offer(node.right);
                }
                if (node.left != null) {
                    nodes.offer(node.left);
                }
            }
        }

        return 0;
    }
}