给定一个二叉树的 根节点 root
,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
思考
这里使用层次遍历,如果下一层为空,则获取该层最左边的节点。
- layerNodes:表示当前层的节点数
- temp:记录下层的节点数
- tempNode :表该层最左边的节点
package 力扣;
import java.util.LinkedList;
import java.util.Queue;
/**
* @author yyq
* @create 2022-04-11 14:29
*/
public class leetcode513 {
public static void main(String[] args) {
TreeNode root=new TreeNode(1);
root.left=new TreeNode(2);
root.right=new TreeNode(3);
System.out.println(findBottomLeftValue(root));
}
public static int findBottomLeftValue(TreeNode root) {
return levelTraversal(root);
}
private static int levelTraversal(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
int layerNodes = 1;
queue.add(root);
while (!queue.isEmpty()) {
int temp = 0;
int one = 1;
TreeNode tempNode = null;
while (layerNodes != 0) {
TreeNode node = queue.poll();
if (one == 1) {
tempNode = node;
one--;
}
if (node.left != null) {
queue.add(node.left);
temp++;
}
if (node.right != null) {
queue.add(node.right);
temp++;
}
layerNodes--;
}
if (temp == 0) return tempNode.val;
layerNodes = temp;
}
return -1;
}
}