参考给中序和后序遍历看到树首先想到要用递归来解题。以这道题为例:如果一颗二叉树为{1,2,3,4,5,6,7},则中序遍历为{4,2,5,1,6,3,7},后序遍历为{4,5,2,6,7,3,1},我们可以反推回去。由于后序遍历的最后一个节点就是树的根。也就是root=1,然后我们在中序遍历中搜索1,可以看到中序遍历的第四个数是1,也就是root。根据中序...
LeetCode Top100: 翻转二叉树(python) 给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。 示例1: 输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1] 示例2: 输入:root = [2,1,3]输出:[2,3,1] 示例3: 输入:root = []输出:[] 提示: 树中节点数目范围在[0, 100]内 ...
二叉树节点的深度:从上数第几层:指从根->该节点的最长简单路径边的条数。 二叉树节点的高度:从下数第几层:指从节点->叶子节点的最长简单路径边的条数。 leetcode144.二叉树的前序遍历 递归较容易,迭代即每次访问stack的top,把左右非空的压进去即可注意左右入栈顺序 leetcode145.二叉树的后序遍历 递归类似。
下面是对应的 Python 代码实现,使用了一个简单的类来定义二叉树节点,以及一个递归函数来计算最大深度: class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: if not root: return 0 else: # 计算左子树的最大深度 left_depth = self.maxDepth(root.left) # 计算右子树的最大深度 righ...
给定一棵二叉树,想象你站在它右侧,按照从顶部到底部的顺序,返回你能看见的结点值的数组。 数据限制 二叉树的结点数的范围为 [0, 100] -100 <= Node.val <= 100 样例 思路:递归/DFS 用ans 维护每一层最右侧结点的值, 然后使用 dfs(root, depth, ans) 先序遍历收集每一层最右侧结点的值即可。 dfs(ro...
给定二叉树,按垂序遍历返回其结点值。对位于 (X, Y) 的每个结点而言,其左右子结点分别位于 (X-1, Y-1) 和 (X+1, Y-1)。把一条垂线从 X = -infinity 移动到 X = +infinity ,每当该垂线与结点接触时,我们按从上到下的顺序报告结点的值(Y 坐标递减)。如果两个结点位置相同,则首先报告的结点...
LeetCode题解(0987):实现二叉树的垂序遍历(Python),题目:原题链接(中等)标签:树、二叉树、深度优先搜索、广度优先搜索、哈希表
这个题目虽然并不是完全二叉树的题目,但是却和完全二叉树很像,有借鉴完全二叉树的地方。代码 代码支持:JS,Python, Go JS Code:const serialize = (root) => { const queue = [root]; let res = []; while (queue.length) { const node = queue.shift(); if (node) { res.push(...
原题链接(中等) 标签:树、二叉树 解法一: class Solution: def boundaryOfBinaryTree(self, root: TreeNode) -> List[int]: if not root: return [] # 寻找左边界 left = [] node = root if node.left: while node: left.append(node) ...