题目地址:https://leetcode.com/PRoblems/find-bottom-left-tree-value/?tab=Description
Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input: 2 / / 1 3Output:1Example 2:
Input: 1 / / 2 3 / / / 4 5 6 / 7Output:7Note: You may assume the tree (i.e., the given root node) is not NULL.
题目要求找到最底层从左到右第一个数字。
那么我们首先想到的就是按照层级遍历二叉树;
判断最底层就是这一层的节点都没用孩子;
最左边的那个就是这一层的第一个节点;
有了这些就好了:
public class FindBottomLeftTreeValue { public static int findBottomLeftValue(TreeNode root) { if (root == null) return -1; LinkedList<TreeNode> levelNodes = new LinkedList<>(); if (root.left == null && root.right == null) return root.val; levelNodes.add(root); while (!levelNodes.isEmpty()) { LinkedList<TreeNode> tempLevel = new LinkedList<>(); for (TreeNode node: levelNodes) { if (node.left != null) tempLevel.add(node.left); if (node.right != null) tempLevel.add(node.right); } if (tempLevel.isEmpty()) return levelNodes.get(0).val; else { levelNodes.clear(); levelNodes.addAll(tempLevel); } } return -1; } public static void main(String[] args) { TreeNode node = new TreeNode(1); node.left = new TreeNode(2); node.right = new TreeNode(3); node.left.left = new TreeNode(4); node.right.left = new TreeNode(5); node.right.right = new TreeNode(6); node.right.left.left = new TreeNode(7); System.out.println(findBottomLeftValue(node)); }}新闻热点
疑难解答