给定一个二叉树的 根节点
root
,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3] 输出: 1示例 2:
输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7提示:
- 二叉树的节点个数的范围是
[1,104]
-231 <= Node.val <= 231 - 1
java 解题思路及 代码实现
package com.java.leetcode.tree;
import com.java.leetcode.compent.TreeNode;
import java.util.ArrayDeque;
import java.util.Deque;
/**
* 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
*
* 假设二叉树中至少有一个节点。
*
*
*
* 示例 1:
*
*
*
* 输入: root = [2,1,3]
* 输出: 1
* 示例 2:
*
*
*
* 输入: [1,2,3,4,null,5,6,null,null,7]
* 输出: 7
*
*
* 提示:
*
* 二叉树的节点个数的范围是 [1,104]
* -231 <= Node.val <= 231 - 1
*/
public class findBottomLeftValue513 {
/**
* 首先拿到该题目首先想到 层序遍历获取到最后一层的第一个节点 即为所要寻找的结果值
* 因此有如下代码 逻辑
*
* @param root
* @return
*/
public int findBottomLeftValue(TreeNode root) {
if(root==null){
return 0;
}
int res=-1000;
Deque<TreeNode> dq=new ArrayDeque<>();
dq.offer(root);
while(!dq.isEmpty()){
int size=dq.size();
for(int i=0;i<size;i++){
TreeNode node=dq.poll();
if(i==0){
res=node.val;
}
if(node.left!=null){
dq.offer(node.left);
}
if(node.right!=null){
dq.offer(node.right);
}
}
}
return res;
}
}