📜  数据结构 |平衡二叉搜索树 |问题2(1)

📅  最后修改于: 2023-12-03 15:26:09.008000             🧑  作者: Mango

数据结构 | 平衡二叉搜索树 | 问题2

简介

平衡二叉搜索树(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比较,若相等则为不平衡树,反之为平衡树。