![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
michael - z
这个作者很懒,什么都没留下…
展开
-
919. 完全二叉树插入器
文章目录题目描述解题思路代码实现参考文献 919. 完全二叉树插入器 题目描述 解题思路 1、思考二叉树节点在数组中的位置关系 代码实现 class CBTInserter: def __init__(self, root: TreeNode): self.node_arr = [None] def helper(root): if not root: return self.no原创 2021-08-11 07:58:32 · 97 阅读 · 0 评论 -
1110. 删点成林
文章目录题目描述解题思路代码实现参考文献 1110. 删点成林 题目描述 解题思路 1、利用树中删除节点思想 2、删除钱记录左右子树 代码实现 class Solution: def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]: self.forest = [] def dfs_delete(root: TreeNode, to_delete: List[int]原创 2021-07-27 21:00:39 · 110 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表
文章目录题目描述解题思路代码实现参考文献 剑指 Offer 36. 二叉搜索树与双向链表 题目描述 解题思路 1、利用二叉搜索树BST性质中序遍历有序; 2、因为要建立双向链表,所以需要记录前驱节点 代码实现 class Solution: def treeToDoublyList(self, root: 'Node') -> 'Node': if not root: return self.pre = None原创 2021-07-27 07:51:55 · 98 阅读 · 0 评论 -
1382. 将二叉搜索树变平衡
文章目录题目描述解题思路代码实现参考文献 1382. 将二叉搜索树变平衡 题目描述 解题思路 本题利用二叉搜索树BST性质中序遍历有序,然后二分法建一颗平衡二叉树 代码实现 class Solution: def balanceBST(self, root: TreeNode) -> TreeNode: self.arr = [] def inorder(root: TreeNode) -> None: if not root:原创 2021-07-27 07:24:44 · 88 阅读 · 0 评论 -
1315. 祖父节点值为偶数的节点和
文章目录题目描述解题思路代码实现参考 1315. 祖父节点值为偶数的节点和 题目描述 解题思路 1、层次遍历、深度优先均可,比正常这些方法多一点是需要记录父节点和祖父节点 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None c原创 2021-05-18 08:17:31 · 83 阅读 · 0 评论 -
1302. 层数最深叶子节点的和
文章目录题目描述代码实现参考 1302. 层数最深叶子节点的和 题目描述 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: d原创 2021-05-17 08:09:20 · 66 阅读 · 0 评论 -
1379. 找出克隆二叉树中的相同节点
文章目录题目描述解题思路代码实现 1379. 找出克隆二叉树中的相同节点 题目描述 解题思路 1、本题original是一个干扰项,按照正常的二叉树遍历即可,需要注意左右子树返回值的使用 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right =原创 2021-05-17 07:50:50 · 91 阅读 · 0 评论 -
450. 删除二叉搜索树中的节点
文章目录题目描述代码实现参考 450. 删除二叉搜索树中的节点 题目描述 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: d原创 2021-05-08 08:03:58 · 107 阅读 · 0 评论 -
662. 二叉树最大宽度
文章目录题目描述实现思路代码实现参考 662. 二叉树最大宽度 题目描述 实现思路 1、回忆数组表示二叉树的位置如何表示 2、层次遍历二叉树 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.r原创 2021-05-07 08:06:47 · 106 阅读 · 0 评论 -
655. 输出二叉树
文章目录题目描述代码实现参考 655. 输出二叉树 题目描述 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def printTree(self, root: TreeNode)原创 2021-04-29 08:04:18 · 137 阅读 · 0 评论 -
671. 二叉树中第二小的节点
文章目录题目描述解题思路代码实现 671. 二叉树中第二小的节点 题目描述 解题思路 1、前序遍历 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class So原创 2021-04-25 08:19:39 · 76 阅读 · 0 评论 -
623. 在二叉树中增加一行
文章目录题目描述解题思路代码实现参考文献 623. 在二叉树中增加一行 题目描述 解题思路 1、层次遍历 2、记录depth上一层所有节点信息 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.原创 2021-04-25 08:13:01 · 89 阅读 · 0 评论 -
437. 路径总和 III
文章目录题目描述解题思路代码实现参考文献 437. 路径总和 III 题目描述 解题思路 1、前缀和的干活,详情参见参考 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = rig原创 2021-04-21 08:00:19 · 151 阅读 · 2 评论 -
429. N 叉树的层序遍历
文章目录题目描述解题思路代码实现 429. N 叉树的层序遍历 题目描述 解题思路 1、正常层次遍历加一个循环遍历N个孩子节点 代码实现 """ # Definition for a Node. class Node: def __init__(self, val=None, children=None): self.val = val self.children = children """ class Solution: def levelOrder(原创 2021-03-31 07:58:28 · 82 阅读 · 0 评论 -
404. 左叶子之和
文章目录题目描述解题思路代码实现 404. 左叶子之和 题目描述 解题思路 1、后续遍历,左叶子特点是左子树并且没有自身没有左右子树 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:原创 2021-03-26 21:53:33 · 65 阅读 · 0 评论 -
337. 打家劫舍 III
文章目录题目描述解题思路代码实现参考文献 337. 打家劫舍 III 题目描述 解题思路 定义2个元素列表res, res[0]代表不偷,res[1]代表偷 任意节点能偷到的最大钱的状态为: 1、当前节点不偷:当前节点能偷到的最大钱数 = 左孩子能偷到的钱 + 右孩子能偷到的钱 2、当前节点偷:当前节点能偷到的最大钱数 = 左孩子不偷能得到的钱 + 右孩子不偷能得到的钱 + 当前节点的钱数 代码实现 # Definition for a binary tree node. # class TreeNode原创 2021-03-24 21:32:02 · 46 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
文章目录题目描述解题思路代码实现参考文献 236. 二叉树的最近公共祖先 题目描述 解题思路 1、 哈希表记录每个节点的父节点 2、辅助数组记录p节点从下往上经过的节点 3、q节点从下往上找,遇到已遍历过的节点即为最近公共祖先 官方第一种解法会简洁很多,但需要理解其含义。 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x #原创 2021-03-23 07:58:37 · 84 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
文章目录题目描述解题思路代码实现参考文献 235. 二叉搜索树的最近公共祖先 题目描述 解题思路 1、二叉树搜索树性质,左子树值均小于父节点值,右子树值均大于父节点值 2、其他参考官方方法二 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right原创 2021-03-21 21:58:57 · 110 阅读 · 1 评论 -
199. 二叉树的右视图
文章目录题目描述解题思路代码实现参考文献 199. 二叉树的右视图 题目描述 解题思路 1、二叉树层次遍历,只输出每层最右侧节点值 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right原创 2021-03-17 22:33:29 · 37 阅读 · 0 评论 -
173. 二叉搜索树迭代器
文章目录题目描述解题思路代码实现参考文献 173. 二叉搜索树迭代器 题目描述 解题思路 1、返回下一个最小数,BST中序遍历是一个升序序列。要求空间复杂度O(h),所以需要自定义栈模拟BST的中序遍历,栈顶为遍历到当下next的最小值节点 2、当有右节点时,需要借助使用初始化入栈时的函数进行同样的操作 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None,原创 2021-03-17 08:14:57 · 106 阅读 · 0 评论 -
129. 求根节点到叶节点数字之和
文章目录题目描述解题思路代码实现参考文献 129. 求根节点到叶节点数字之和 题目描述 解题思路 1、先序遍历 2、回溯法记录所有路径,path即回溯路径 3、和113路径总和II类似 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left =原创 2021-03-16 08:20:34 · 78 阅读 · 1 评论 -
124. 二叉树中的最大路径和
文章目录题目描述解题思路代码实现参考文献 124. 二叉树中的最大路径和 题目描述 解题思路 1、后序遍历:先取得左右子树的最大路径和,如何路径和大于0,则有效,否则无效 2、嵌套函数返回值的不能是:node.val + leftSum + rightSum ,应该是:node.val + max(leftSum, rightSum)。因为max_path_sum()的定义是:以当前节点为路径的最大路径和,左右子树只能选一条路径。 代码实现 """ # Definition for a binary tr原创 2021-03-15 08:19:33 · 103 阅读 · 1 评论 -
117. 填充每个节点的下一个右侧节点指针 II
文章目录题目描述解题思路代码实现参考文献 117. 填充每个节点的下一个右侧节点指针 II 题目描述 解题思路 1、本题每层的连续两个节点都需要链接成链表,层次遍历做合适; 2、如何区分每一层,在进入新一层时,首先获取当前层节点个数,依据个数决定操作次数即可。 代码实现 """ # Definition for a Node. class Node: def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None原创 2021-03-13 08:00:00 · 47 阅读 · 0 评论 -
113. 路径总和 II
文章目录题目描述解题思路代码实现参考文献 113. 路径总和 II 题目描述 解题思路 1、前序遍历判断节点是否满足路径和 2、需要返回所有满足的路径和,而每条路径也需要记录,所以需要定义两个list:ret, path。ret记录结果;path记录路径,采用回溯法,因此只初始化了一次。 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=N原创 2021-03-10 08:21:14 · 105 阅读 · 0 评论 -
112. 路径总和
文章目录题目描述解题思路代码实现参考文献 112. 路径总和 题目描述 解题思路 1、前序遍历得到左右子树是否满足条件 2、如果当前叶子和target差值为0,返回True,否则返回False 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.le原创 2021-03-08 08:18:15 · 104 阅读 · 1 评论