检查二叉树是否满足平衡高度属性

2025年3月17日 | 阅读 8 分钟

高度平衡二叉树通常是指任意给定节点的右子树和左子树的高度差不超过 1,并且两个子树本身也是高度平衡的。

要判断给定的二叉树是否满足高度平衡属性,我们需要检查左右子树的高度差是否至少为 1。为了弄清楚这一点,我们有一个算法方法:

  1. 首先,我们需要解释一个名为“is balanced”的函数,它将立即接收一个二叉树节点作为输入,并且必须返回一个布尔值。
  2. 如果输入节点碰巧为空,那么我们必须返回实际值,因为空树总是高度平衡的。
  3. 现在我们必须通过调用左子节点上的“is balanced”函数来计算左子树的高度,然后将其存储在左高度中。
  4. 现在我们必须通过调用左子节点上的“is balanced”函数来计算右子树的高度,然后将其存储在右高度中。
  5. 现在,我们必须计算左右子树的高度差,如果差值大于 1,那么我们必须返回 false 值,因为该树不符合高度平衡属性。
  6. 如果上述条件不成立,我们必须返回 true 值。

实施

输出

Find if Binary Tree Satisfies Balanced Height Property

代码的分步解释

  1. 代码首先包含必要的头文件,包括 bits/stdc++.h>,其中包含所有标准 C++ 库。
  2. 代码中定义了几个类,包括 Node,它表示一个二叉节点。节点中包含整数值(数据)以及指向左右子节点的指针(left 和 right)。
  3. 为了计算树的高度,定义了 height 函数。输入一个节点指针(node),并返回以该节点为根的树的高度(整数)。如果树为空,即节点为 NULL,则高度被认为是零。否则,高度计算为 1 加上左右子树中的最大高度。
  4. isBalanced 函数确定二叉树是否高度平衡。它将接收一个根节点值作为输入并返回一个布尔值。
  5. 通过 isbalanced 函数,我们得到两个变量 lh 和 rh,然后存储两个子树的高度。
  6. 现在,我们将有一个函数来检查两个高度的绝对差是否小于或等于 1。如果满足此条件,并且两个子树都是高度平衡的,那么我们必须返回实际值。
  7. 如果上述条件不满足,我们必须返回 false 值,因为子树不是高度平衡的。
  8. 接下来,主函数通常作为程序的入口。
  9. 之后,它调用 isbalanced 函数来验证参数并根据返回的布尔值打印结果。
  10. 最后,main 函数返回 0,这强调了程序的完全执行。

示例 2)

输出

Find if Binary Tree Satisfies Balanced Height Property

代码的分步解释

  1. 代码首先声明了两个类,'node' 和 'binary tree'。这里,node 类表示二叉树中的节点,并包含指向左右子节点的指针,而 binary tree 表示二叉树,并且只有一个属性,称为 'root'。
  2. 我们在二叉树中有一个 isbalanced 函数,它接收一个节点作为参数并返回一个布尔值。
  3. isbalanced 函数首先检查节点是否为 NULL;如果是,则表示空树。
  4. 如果树不为空,我们必须首先使用 height 方法计算左右子树。
  5. height 方法将计算二叉树的高度。如果节点为空,则我们将二叉树的高度视为 0。树的高度是 1 + 左右子树之间的最大高度。
  6. 完成计算后,isbalanced 函数检查左右子树之间的高度差是否小于 1。
  7. 如果满足所有上述条件,则该方法返回实际值,表示树是平衡的;否则,它返回 false。
  8. 现在,在函数的主方法中,程序中创建了一棵树,其中包含根和子节点的所有指定值。
  9. 最后,在树的对象 'root' 上调用 isbalanced 函数,以验证树是否平衡。

示例 3)

输出

Find if Binary Tree Satisfies Balanced Height Property

代码的分步解释

  1. 我们将从程序中定义一个名为“Node”的类开始。这里,node 类表示二叉树中的节点,并包含指向左右子节点的指针。
  2. 现在,我们将定义一个名为 height(root) 的函数,它将计算二叉树的高度。该函数将使用递归来确定二叉树的高度。主要情况是二叉树的高度为 0。树的高度是 1 + 左右子树之间的最大高度。
  3. 我们必须定义一个名为 isbalanced 的函数,它验证一棵树是否高度平衡;isbalanced 函数检查左右子树之间的高度差是否小于 1。7. 如果满足所有上述条件,则该方法返回实际值,表示树是平衡的;否则,它返回 false。
  4. 现在,在函数的主方法中,通过创建节点并使用左右属性,在程序中创建了一棵树。
  5. isbalanced 函数将以树的根作为参数调用,并根据此返回一个值。
  6. 最后,根据返回的值,我们将打印树是否平衡。

结论

上述方法中的代码提供了一种解决方案,用于检查树是否高度平衡。它通常为二叉树定义一个节点类和各种其他函数,以检查树是否高度平衡。总之,该代码为二叉树的高度平衡属性提供了一个简单的答案。