首页 > 其他分享 >leedcode 平衡二叉树

leedcode 平衡二叉树

时间:2024-02-20 11:57:13浏览次数:21  
标签:node right cur leedcode queue 二叉树 平衡 root left

对称二叉树走不通    201 / 228 个通过的测试用例

class Solution:
    def isBalanced(self, root: Optional[TreeNode]) -> bool:
        queue=[root]
        if not root:
            return True
        if not root.left and not root.right:
            return True
        if not root.left or not root.right:
            if  root.right:
                if root.right.right or root.right.left:
                    return False
                if not root.right.right:
                    return True
            if  root.left:
                if root.left.left or root.left.right:
                    return False
                if not root.left.left:
                    return True
        max_depth=0
        while queue:
            level_len=len(queue)
            for i in range(level_len):
                cur_node=queue.pop(0)
                if cur_node.left:
                    queue.append(cur_node.left)
                if cur_node.right:
                    queue.append(cur_node.right)
            max_depth+=1
        queue = [root]
        min_depth = 0
        while queue:
            level_len = len(queue)
            for i in range(level_len):
                cur_node = queue.pop(0)
                if not cur_node.left and not cur_node.right:
                    queue=[]
                    break
                if cur_node.left:
                    queue.append(cur_node.left)
                if cur_node.right:
                    queue.append(cur_node.right)
            min_depth += 1
        print(max_depth,min_depth)
        if max_depth-min_depth<=1:
            return True
        else:
            return False

 

标签:node,right,cur,leedcode,queue,二叉树,平衡,root,left
From: https://www.cnblogs.com/yyyjw/p/18022790

相关文章

  • (20/60)二叉搜索树的最小绝对差、二叉搜索树中的众数、二叉树的最近公共祖先
    过外婆八十寿宴,补卡二叉搜索树的最小绝对差leetcode:530.二叉搜索树的最小绝对差双指针中序遍历法思路搜索树的最小绝对差一定出现在中序遍历的相邻两个元素之间。设置前后两个指针,每次对比“历史最小”与当前node->val-pre->val的值哪个更小,进行相应更新。复杂度分析......
  • 晚上调代码时写对拍程序之——为了不手写平衡树而乱搞的可支持随机访问、快速插入、快
    前言由于需要一个可支持随机访问、快速插入、快速删除的数据结构,但是我除了平衡树实在是想不到别的东西了,于是就乱搞出了一个这样的东西——abstract数组。但是,这玩意好像码量和平衡树差不多......不过!我认为她还是有优点的:相比起平衡树,她应该更不容易出锅?总之,不管怎么样,还是......
  • 二叉树(2)
    目录538把二叉搜索树转换为累加树538把二叉搜索树转换为累加树和平常的遍历顺序不同这题根据题意是需要取比当前节点大的所有数值的和而在二叉搜索树中,节点的大小关系是左<中<右所以自然而然地我们就得到了如下的遍历顺序:右->中->左classSolution{public:intvalue......
  • 代码随想录算法训练营第二十天 | 236. 二叉树的最近公共祖先 , 501.二叉搜索树中的众
      530.二叉搜索树的最小绝对差 已解答简单 相关标签相关企业 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。 示例1:输入:root=[4,2,6,1,3]输出:1示......
  • 「力扣」104. 二叉树的最大深度
    「力扣」104.二叉树的最大深度题目描述给定一个二叉树root,返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。示例1:输入:root=[3,9,20,null,null,15,7]输出:3示例2:输入:root=[1,null,2]输出:2提示:树中节点的数量在[0,10......
  • 代码随想录算法训练营第十九天 | 98.验证二叉搜索树, 700.二叉搜索树中的搜索,617.合并
     654.最大二叉树 已解答中等 相关标签相关企业 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树......
  • 代码随想录算法训练营第十八天 | 112. 路径总和,113. 路径总和ii ,106.从中序与后序遍
     513.找树左下角的值 已解答中等 相关标签相关企业 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层最左边 节点的值。假设二叉树中至少有一个节点。 示例1:输入:root=[2,1,3]输出:1示例2:输入:[1,2,3,4,null,5,6,n......
  • 力扣 深度优先搜索 199. 二叉树的右视图
    /** *Definitionforabinarytreenode. *publicclassTreeNode{ *  intval; *  TreeNodeleft; *  TreeNoderight; *  TreeNode(){} *  TreeNode(intval){this.val=val;} *  TreeNode(intval,TreeNodeleft,Tr......
  • 平衡树
    前置芝士——二叉搜索树BST简介二叉搜索树是一种二叉树的树形数据结构,其定义如下:空树是二叉搜索树。若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。若二叉搜索树的右子树不为空,则其右子树上所有点的附加权值均大于其根节点的值。二叉搜索......
  • 代码随想录算法训练营第十七天 | 110.平衡二叉树 (优先掌握递归)| 404.左叶子之和 (优先
    257.二叉树的所有路径 已解答简单 相关标签相关企业 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例1:输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:ro......