LeetCode[513]找树左下角的值
思路:
找树左下角的值,有可能这个值不是左叶子节点,可能是右叶子节点,但怎么说这个值都是叶子节点,首先这道题用层序遍历的思路比如什么队列和BSF的递归都可以做,但我比较喜欢用纯递归来搞,因为这道题不需要处理根节点,所以前中后序遍历都可以,我们只要模拟层数,然后找到叶子节点即可。
代码:
/*** 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 {int maxValue = 0;int maxLevel = 0;public int findBottomLeftValue(TreeNode root) {maxValue = root.val;findMaxValue(root,0);return maxValue;}public void findMaxValue(TreeNode root, int level){if(root==null) return;if(root.left == null && root.right==null){if(level>maxLevel){maxLevel = level;maxValue = root.val;}}findMaxValue(root.left, level+1);findMaxValue(root.right, level+1);}
}