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.
对于这道题,我的理解是在遍历的时候因为不知道后面会不会出现深度更高的节点,所以需要遍历。设置全部变量, 中序遍历记录最深层的第一个元素即可。
代码:
int layer = 1;
int value = -1;
public int findBottomLeftValue(TreeNode root) {
if(root == null) return -1;
value = root.val;
inorder(root, 1);
return value;
}
private void inorder(TreeNode node, int curLayer) {
if(node == null) return;
inorder(node.left, curLayer+1);
if(curLayer>layer) {
layer = curLayer;
value = node.val;
}
inorder(node.right, curLayer+1);
}