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.
Solution 1:
DFS, preOrder
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { int height = 0; int res = 0; public int findBottomLeftValue(TreeNode root) { helper(root, 1); return res; } private void helper(TreeNode root, int depth) { if (root == null) { return; } if (height < depth) { height = depth; res = root.val; } helper(root.left, depth + 1); helper(root.right, depth + 1); } }
Solution 2:
BFS
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int findBottomLeftValue(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); int res = 0; queue.offer(root); while (!queue.isEmpty()) { TreeNode cur = queue.poll(); res = cur.val; if (cur.right != null) { queue.offer(cur.right); } if (cur.left != null) { queue.offer(cur.left); } } return res; } }