leetcode算法: Find Bottom Left Tree Value

leetcode算法: Find Bottom Left Tree Value

Given a binary tree, find the leftmost value in the last row of the tree.

Example 1:Input:

2   / \  1   3

Output:1Example 2: Input:

1       / \      2   3     /   / \    4   5   6       /      7

Output:7Note: You may assume the tree (i.e., the given root node) is not NULL.

这道题 是 给我们一颗二叉树的根节点,让我们找到最后一层的最左边的节点。绞尽脑汁之后,利用二维数组把每个节点和所在层次扒下来了,但是还是太麻烦。看了其他大神的思路豁然开朗!

大神的思路是:从右向左广度优先遍历!! 最后一个节点就是我们要的结果!!献上我的代码:
 1 # Definition for a binary tree node.
 2 # class TreeNode(object):
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7
 8 class Solution(object):
 9     def findBottomLeftValue(self, root):
10         """
11         :type root: TreeNode
12         :rtype: int
13         """
14         q = [root]
15         while q:
16             node = q.pop(0)
17             if node.right is not None:
18                 q.append(node.right)
19             if node.left is not None:
20                 q.append(node.left)
21         return node.val
时间: 2024-12-16 22:15:49

leetcode算法: Find Bottom Left Tree Value的相关文章

[LeetCode]513 Find Bottom Left Tree Value(BFS)

题目链接:https://leetcode.com/problems/find-bottom-left-tree-value/?tab=Description 题意:找到二叉树里最底下的最靠左的叶子节点的值. 看到input的时候吓哭了,以为是要处理这种输入.看到代码填空部分才缓过来- 直接bfs,遇到更深的就更新,每次都让最左的先入队列.就能保证每次更新到的答案都是最左的. 1 /** 2 * Definition for a binary tree node. 3 * struct Tree

leetcode 513. Find Bottom Left Tree Value

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. 分析:广搜,层序遍历,保存每层的第一个

LeetCode算法题-Subtree of Another Tree(Java实现)

这是悦乐书的第265次更新,第278篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第132题(顺位题号是572).给定两个非空的二进制树s和t,检查树t是否具有完全相同的结构和具有子树s的节点值. s的子树是一个树,由s中的节点和所有节点的后代组成. 树也可以被视为自己的子树.例如: 鉴于树s: 3 / 4 5 / 1 2 鉴于树t: 4 / 1 2 返回true,因为t具有相同的结构和节点值,其子树为s. 鉴于树s: 3 / 4 5 / 1 2 / 0 鉴于树t:

LeetCode算法题-Average of Levels in Binary Tree(Java实现)

这是悦乐书的第277次更新,第293篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第145题(顺位题号是637).给定一个非空二叉树,以数组的形式返回每一层节点值之和的平均值.例如: 3 / 9 20 / 15 7 输出:[3,14.5,11] 说明:第一层上的节点的平均值为3,第二层上的节点的平均值为14.5,第三层上的节点的平均值为11.因此返回[3,14.5,11]. 注意:节点值的范围在32位有符号整数的范围内. 本次解题使用的开发工具是eclipse,jd

513. Find Bottom Left Tree Value - LeetCode

Question 513. Find Bottom Left Tree Value Solution 题目大意: 给一个二叉树,求最底层,最左侧节点的值 思路: 按层遍历二叉树,每一层第一个被访问的节点就是该层最左侧的节点 Java实现: public int findBottomLeftValue(TreeNode root) { Queue<TreeNode> nodeQueue = new LinkedList<>(); nodeQueue.offer(root); // 向

LeetCode算法题-Lowest Common Ancestor of a Binary Search Tree

这是悦乐书的第197次更新,第203篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第59题(顺位题号是235).给定二叉搜索树(BST),找到BST中两个给定节点的最低共同祖先(LCA).根据维基百科上LCA的定义:"最低共同祖先在两个节点p和q之间定义为T中的最低节点,其中p和q都是后代(我们允许节点成为其自身的后代)." 给定二叉搜索树:root = [6,2,8,0,4,7,9,null,null,3,5] 6 / 2 8 / \ / 0 4 7 9

LeetCode算法题-N-ary Tree Level Order Traversal(Java实现)

这是悦乐书的第225次更新,第238篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第92题(顺位题号是429).给定n-ary树,返回其节点值的级别顺序遍历.(即,从左到右,逐级).例如,给定一个3-ary树: 我们应该返回它的级别顺序遍历: [[1],[3,2,4][5,6]] 注意: 树的深度最多为1000. 节点总数最多为5000. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 02

LeetCode算法题-Find Mode in Binary Search Tree(Java实现)

这是悦乐书的第246次更新,第259篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第113题(顺位题号是501).给定具有重复项的二叉搜索树(BST),找到给定BST中的所有模式(最常出现的元素).假设BST定义如下: 节点的左子树仅包含键小于或等于节点键的节点. 节点的右子树仅包含键大于或等于节点键的节点. 左右子树也必须是二叉搜索树. 例如: 鉴于BST [1,null,2,2], 1 2 / 2 返回[2]. 注意:如果树有多个模式,您可以按任何顺序返回它们.

LeetCode算法题-Convert BST to Greater Tree(Java实现)

这是悦乐书的第255次更新,第268篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第122题(顺位题号是538).给定二进制搜索树(BST),将其转换为更大树,使原始BST的每个键都更改为原始键加上所有键的总和大于BST中的原始键.例如: 输入:二进制搜索树的根,如下所示: 5 / 2 13 输出:大树的根,如下所示: 18 / 20 13 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 0