本文主要是介绍力扣算法学习day14-1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
力扣算法学习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);
}
}
}
这篇关于力扣算法学习day14-1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!