📅  最后修改于: 2023-12-03 15:41:41.928000             🧑  作者: Mango
平衡二叉树(Balanced Binary Tree),顾名思义,就是对于一棵二叉树,左右子树的高度差不能超过 1。保证了平衡二叉树的左右子树的高度相差不多,因此它的查找、插入和删除的时间复杂度都是 O(log n)。
在插入和删除节点时,若不平衡,需要对该节点的不平衡祖先节点进行旋转操作来平衡整棵树。具体旋转操作可参考 AVL 树和红黑树等平衡二叉树的算法。
通过平衡二叉树的定义可知,如果想要高度为 h 的平衡二叉树,就需要满足以下条件:
因此,我们可以递归地构造这样一棵高度为 h 的平衡二叉树:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def buildTree(self, h: int) -> TreeNode:
if h == 0:
return None
if h == 1:
return TreeNode()
left_height = (h - 1) // 2
right_height = h - 1 - left_height
root = TreeNode()
root.left = self.buildTree(left_height)
root.right = self.buildTree(right_height)
return root
以上是 Python 代码示例,利用了递归算法,通过构造左右子树高度的方式来构造出这棵平衡二叉树。时间复杂度为 O(h),空间复杂度为 O(h)。
平衡二叉树是一种重要的动态数据结构,它保证了二叉树的平衡性,从而提高了二叉树的查找、插入和删除效率。本文介绍了如何计算高度为 h 的平衡二叉树,并给出了 Python 代码示例。希望对大家理解和应用平衡二叉树有所帮助。