
二叉树
一杯小熊
这个作者很懒,什么都没留下…
展开
-
二叉树的层序遍历
题目:# self.val = val# self.left = left# self.right = rightclass Solution: def flatten(self, root: TreeNode) ->...原创 2021-04-07 10:39:15 · 85 阅读 · 0 评论 -
LeetCode 543 二叉树的直径
# 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 = rightclass Solution: def diameterOfBinaryTree(self, root: Tr...原创 2021-03-29 20:34:27 · 79 阅读 · 0 评论 -
剑指Offer 26 树的子结构
思路:dfs函数用来判断B中所有节点是否与A中当前节点开始的数相同,然后主函数判断B是不是A的子结构# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSubStructure..原创 2021-03-19 20:53:31 · 70 阅读 · 0 评论 -
剑指Offer 68 二叉树的最近公共祖先
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNod...原创 2021-03-14 16:29:51 · 137 阅读 · 0 评论 -
剑指Offer 34 二叉树中和为某一值的路径
思路:dfs + 回溯注意:如果语句写在递归下面就是回溯,当二叉树遍历完左子树回去的时候就会删除节点# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def pathSum(se..原创 2021-03-04 20:28:16 · 158 阅读 · 1 评论 -
剑指Offer.33 二叉搜索树的后序遍历序列
class Solution: def verifyPostorder(self, postorder: List[int]) -> bool: def helper(left, right): if left >= right: return True p = left while postorder[p] < postorder[right]: p += 1 ...原创 2021-03-03 10:38:07 · 98 阅读 · 0 评论 -
二叉搜索树的最近公共祖先/LeetCode.No.235
出错的例子:出错原因:递归前两个条件没有return,调用函数无输出接口,所以最后return Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': def CommonAncestor(root, p, q): valr = root.val v.原创 2021-01-10 15:16:14 · 82 阅读 · 0 评论 -
二叉树的所有路径/LeetCode.No.257
递归:由上至下递归,需要传递路径这个参数,递归函数无返回class Solution: def binaryTreePaths(self, root: TreeNode) -> List[str]: def allPaths(root, path): if root: path += str(root.val) if not root.left and not root.right:原创 2021-01-09 17:32:51 · 86 阅读 · 0 评论 -
二叉树的最小深度/Leecode.No.111
思路和二叉树的最大深度不同,二叉树的最大深度只需要返回max(左子树最大深度,右子树最大深度)+1就可以二叉树的最小深度需要判断其左子树和右子树是否存在class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 if not root.left and not root.right: return 1原创 2021-01-07 22:03:57 · 169 阅读 · 0 评论 -
给定一个二叉树,判断它是否是高度平衡的二叉树
自底向上的递归class Solution: def isBalanced(self, root: TreeNode) -> bool: def height(root): if not root: return 0 height_left = height(root.left) height_right = height(root.right)原创 2021-01-07 20:57:18 · 166 阅读 · 1 评论 -
二叉树的最大深度
目录用递归和广度优先搜索(BFS)实现二叉树的最大深度递归:自底向上(比较容易理解)递归:自顶向下广度优先搜索,思路与二叉树的层序遍历相同用递归和广度优先搜索(BFS)实现二叉树的最大深度递归:自底向上(比较容易理解)class Solution: def maxDepth(self, root: TreeNode) -> int: def depth(root): if not root: .原创 2021-01-05 15:33:24 · 77 阅读 · 0 评论