📅  最后修改于: 2023-12-03 15:26:09.008000             🧑  作者: Mango
平衡二叉搜索树(AVL树)是一种自平衡的二叉搜索树,其中任意节点的左右子树高度最多相差1。它广泛应用于数据库、操作系统等领域,能够在log(n)时间内完成查找、插入、删除等操作。
问题2是平衡二叉搜索树中的一个问题,它要求实现一个函数,判断给定的二叉搜索树是否是平衡树。
class Node:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def isBalanced(self, root: Node) -> bool:
def height(root):
if not root:
return 0
left = height(root.left)
if left == -1:
return -1
right = height(root.right)
if right == -1 or abs(left - right) > 1:
return -1
return 1 + max(left, right)
return height(root) != -1
该函数使用递归的方式,依次检查每个节点的左右子树高度并比较它们之间的差距,如果该树的任意节点左右子树高度差值大于1,则不是平衡树。递归结束后,如果不是平衡树则返回-1,否则返回树高。
最终,将树高与-1比较,若相等则为不平衡树,反之为平衡树。