📅  最后修改于: 2023-12-03 14:50:46.296000             🧑  作者: Mango
这道问题是一道关于二叉树的问题。我们需要实现一个函数来检查给定的二叉树是否是“完美平衡”二叉树。
“完美平衡”二叉树是一种特殊的二叉树,它满足以下两个条件:
具体而言,我们的任务是实现一个函数isPerfectlyBalanced
,它接受一个二叉树的根节点作为参数,并返回一个布尔值,指示该树是否为“完美平衡”二叉树。
例如,对于如下二叉树,我们应该返回True
:
1
/ \
2 3
/ \ \
4 5 6
/ \
7 8
我们可以使用下面的算法来解决这个问题:
True
。False
。下面是该算法的Python实现:
def height(root):
if not root:
return 0
return 1 + max(height(root.left), height(root.right))
def isPerfectlyBalanced(root):
if not root:
return True
left_height = height(root.left)
right_height = height(root.right)
if abs(left_height - right_height) > 1:
return False
return isPerfectlyBalanced(root.left) and isPerfectlyBalanced(root.right)
该程序中height
函数用于计算给定节点的高度。
程序中的isPerfectlyBalanced
函数是我们所需的实际函数。我们首先检查给定的节点是否为空。如果为空,我们返回True
。
然后,我们计算左右子树的高度,并检查它们的高度差是否超过1。如果是,我们返回False
。否则,我们递归地检查左右子树是否都是“完美平衡”二叉树。
以上是一种Python程序,实现了检查给定二叉树是否为“完美平衡”二叉树的算法。可以使用该算法以及实现来应对ISRO CS 2009问题26。