文章目录
力扣算法学习day14-1
513-找出左下角的值
题目-略
代码实现
- 改良昨日迭代法细节
- 递归法实现,递归法速度更快一点。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
// public int findBottomLeftValue(TreeNode root) {
// LinkedList<TreeNode> queue = new LinkedList<>();
// // 优化,可以只用一个int类型的值,每次覆盖即可,一开始我想复杂了。
// // ArrayList<Integer> list = new ArrayList<>();
// int result = 0;
// queue.offer(root);
// while(!queue.isEmpty()){
// int len = queue.size();
// int index = len;
// while(len > 0){
// TreeNode node = queue.poll();
// if(index == len){
// result = node.val;
// }
// if(node.left != null){
// queue.offer(node.left);
// }
// if(node.right != null){
// queue.offer(node.right);
// }
// len--;
// }
// }
// return result;
// }
// 迭代法,速度会更快一些 1ms-->0ms
private int Deep;// 最大深度
private int leftValue;// 最深,最左边的值
public int findBottomLeftValue(TreeNode root) {
findValue(root,1);
return leftValue;
}
public void findValue(TreeNode node,int deep){
if(node.left == null && node.right == null){
if(deep > Deep){
Deep = deep;
leftValue = node.val;
}
return;
}
if(node.left != null){
findValue(node.left,deep + 1);
}
if(node.right != null){
findValue(node.right,deep + 1);
}
}
}