
二叉树
QxXyY
这个作者很懒,什么都没留下…
展开
-
二叉树总结
1.DFS的三种遍历顺序,特点 2.BFS遍历使用两端队列(collections.deque())可以不占用额外空间,每层遍历删除头元素,将下一层子节点加入队尾 3.考虑左右子树分治 如最大深度=max(左子树最大深度,右子树最大深度) 平衡二叉树:左子树平衡 and 右子树平衡 and 左右子树深度差<1 重建二叉树:重建左子树+重建右子树 4.注意搜索树的性质(左<root<右) 搜索树考虑中序遍历:结果升序 5.某节点路径、回溯问题,可以使用hash表储存父节点与子节点的指向关系原创 2022-02-25 03:41:07 · 531 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径
思路:DFS,采用前序遍历,构建一个列表path[]来存叶子节点的路径, 如果遍历到叶子节点,该路径不满足target,那么删除path中最后一个元素,同时返回上一层的父节点继续遍历 如果该path满足target,将path的拷贝加入到result中 class Solution: def pathSum(self, root: TreeNode, target: int) -> List[List[int]]: res=[] path=[] .原创 2022-02-23 23:01:33 · 144 阅读 · 0 评论 -
剑指68 最近公共祖先
二叉搜索树的公共祖先 思路:搜索树一定是左<root<右,二分查找,root大于pq则pq公共祖先一定位于root左子树上,反之位于右子树,若pq在root两侧则root为公共祖先 时间复杂度O(N)空间复杂度O(1) class Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': while root.val原创 2022-02-23 22:39:21 · 188 阅读 · 0 评论 -
剑指32打印二叉树
剑指 Offer 32 - II. 从上到下打印二叉树 II 思路:BFS(参考55) 创建一个队列/列表que来储存每层节点 由于需要每层打印,创建一个临时列表p来存每一层的打印结果 需要一个中间变量temp储存每层遍历的节点,每次遍历更新que重置temp(这样需要额外的存储空间来储存每一层的节点) 改进:用两端队列来储存节点,遍历时对队列进行操作: 每次遍历,删除队列左边第一个旧节点,同时将新节点添加至队列末尾 每层的循环次数为len(que),这样不需要额外存储空间 class Solution:原创 2022-02-22 16:47:40 · 171 阅读 · 0 评论 -
剑指28 对称二叉树
对称二叉树 思路: 自顶向下递归 判断左右两侧对应位置是否对称 即:左空 and 右空:对称 左右只有一个None:不对称 左右对应节点值不等:不对称 递归:左节点左子节点值=右节点右子节点值 左节点右子节点值=右节点左子节点值 class Solution: def isSymmetric(self, root: TreeNode) -> bool: def helper(L,R): if not L and not R:return True原创 2022-02-22 14:49:28 · 178 阅读 · 0 评论 -
剑指offer07 重建二叉树
剑指offer07 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 思路:分治 前序遍历:[root,[左子树前序遍历结果],[右子树前序遍历结果]] 中序遍历:[[左子树中序遍历结果],root,[右子树中序遍历结果]] 递归过程:root+左子树重建+右子树重建 因此重点是确定每次子树重建时的范围,根据中序遍历对应索引确定前序遍历中对应子树的坐标范围 class Solution: def buildT原创 2022-02-22 03:17:05 · 176 阅读 · 0 评论 -
剑指54.二叉搜索树的第 k 大节点,55.二叉树深度
54.二叉搜索树的第 k 大节点 中序遍历:left→root→right的顺序递归,得到的结果是升序 采用right→root→left的方式,得到降序,存在list中,最后取第k个元素 改进:提前停止递归 每次递归 traverse(right)之后 记录步数,当到达k时,表示这是第k大节点,停止递归 class Solution: def kthLargest(self, root: TreeNode, k: int) -> int: self.k=k d原创 2021-12-10 18:47:53 · 247 阅读 · 0 评论