首页 > 学院 > 开发设计 > 正文

Find Bottom Left Tree Value

2019-11-06 09:22:11
字体:
来源:转载
供稿:网友

题目地址: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:1

Example 2:

Input: 1 / / 2 3 / / / 4 5 6 / 7Output:7

Note: 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)); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表