📅  最后修改于: 2023-12-03 14:58:24.276000             🧑  作者: Mango
该题目是GATE-CS-2000考题中的第38题。它是一道关于数据结构的题目,主要考察了二叉搜索树的基本操作和平衡二叉树的概念。
在这道题目中,给定一个二叉搜索树(BST),你需要实现一个函数,判断这个BST是否是平衡二叉树。
BST是一种满足如下条件的二叉树:
左子树中所有节点的值都小于它的根节点的值
右子树中所有节点的值都大于它的根节点的值
左右子树都是BST
平衡二叉树是一种二叉树,其中任意节点的两棵子树的高度差不超过1。也就是说,二叉树的左右子树高度差的绝对值不超过1。
我们可以通过递归实现这个函数。首先,我们需要判断当前节点的左右子树的高度是否平衡,如果不平衡则返回false;如果平衡,则继续递归处理左右子节点,判断它们是否是平衡的BST。
具体来说,我们可以实现一个递归函数,计算出当前节点的左右子树的高度,然后判断它们的高度差是否不超过1,如果超过了1,则返回false。如果左右子树都是平衡的BST,则返回true。
def is_balanced_bst(root):
if root is None:
return True
left_height = get_height(root.left)
right_height = get_height(root.right)
if abs(left_height - right_height) > 1:
return False
return is_balanced_bst(root.left) and is_balanced_bst(root.right)
def get_height(node):
if node is None:
return 0
return max(get_height(node.left), get_height(node.right)) + 1
该题目主要考察了二叉搜索树和平衡二叉树的概念,以及如何通过递归实现对二叉树的遍历和判断。对于程序员来说,这道题目是一个不错的练习题目,可以帮助加深对数据结构的理解和应用。