Description
Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input:
2
/ \
1 3
Output:
1
Example 2:
Input:
1
/ \
2 3
/ / \
4 5 6
/
7
Output:
7
Note: You may assume the tree (i.e., the given root node) is not NULL.
问题描述
给定二叉树, 返回其最下层最左边的节点的值
问题分析
前序遍历(先遍历左子节点, 后遍历右子节点), 递归的过程中注意利用当前节点的高度与当前最大高度
解法1
class Solution {
public int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> queue = new LinkedList();
queue.add(root);
while (!queue.isEmpty()) {
root = queue.poll();
if (root.right != null) queue.add(root.right);
if (root.left != null) queue.add(root.left);
}
return root.val;
}
}
解法2
class Solution {
private int val = 0;
private int maxDepth = 0;
public int findBottomLeftValue(TreeNode root) {
find(root, 1);
return val;
}
public void find(TreeNode root, int depth){
if(root == null) return;
if(depth > maxDepth){
val = root.val;
maxDepth = depth;
}
find(root.left, depth + 1);
find(root.right, depth + 1);
}
}