问题描述
来源:LeetCode第513题
难度:中等
给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
提示:
二叉树的节点个数的范围是 [1,10^4]
-2^31 <= Node.val <= 2^31 - 1
问题分析
这题让返回的是最底层的最左边的节点值,解题思路也是一层一层的打印,每层从右往左打印,那么每一层最后一个打印的节点就是最左边的节点,前面的我们不需要记录,只需要记录最后一层最后一个打印的节点即可。
来看下代码:
// 先访问右子节点,在访问左子节点
public int findBottomLeftValue(TreeNode root) {
Queue<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;// 最后一层的最左边节点
}
联系客服