找树左下角的值
513.找树左下角的值
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
示例 2:
思路
递归
二叉树左边最大深度的最左边值,就是我们要找的值
定义两个全局静态变量,记录左边的最大深度和记录左边最大深度的值
利用前序遍历的方式,当传入的深度值大于定义的值时,记录下当前的最大深度值
向左子树递归;向右子树递归
层序遍历
当找到最底层的最左边值时,传递给结果返回就可以
代码
//递归实现
private static int maxLen=-1;
private static int leftValue=0;
public static void leftValueR(Node root,int leftNum){
if(root == null) return;
if(leftNum>maxLen){
maxLen = leftNum;
leftValue = root.val;
}
if(root.left!=null){
leftValueR(root.left,leftNum+1);
}
if(root.right!=null){
leftValueR(root.right,leftNum+1);
}
}
//层序遍历实现
public static int leftValueR2(Node root){
if (root==null) return 0;
Queue<Node> queue = new ArrayDeque<>();
queue.add(root);
int result=0;
while(!queue.isEmpty()){
int size = queue.size();
for (int i = 0; i < size; i++) {
Node temp = queue.poll();
if(i == 0){
result = temp.val;
}
if(temp.left!=null){
queue.add(temp.left);
}
if(temp.left!=null){
queue.add(temp.right);
}
}
}
return result;
}