检查二叉树是否与迭代函数平衡?

时间:2013-01-22 15:58:15

标签: binary-tree

我需要实现一个非递归函数来确定二叉树是否平衡。

任何?

感谢!!!

1 个答案:

答案 0 :(得分:6)

假设通过“平衡”,你的意思是AVL树意义上的“高度平衡”,你可以为每个节点存储任意信息,

  • 对于后续订单中的每个节点,
    • 如果任何一个孩子不存在,则假设其各自的身高为0。
    • 如果两个孩子的身高相差超过一,则树不平衡。
    • 否则,此节点的高度是两个孩子的高度中的较大者。
  • 如果达到此点,树就会平衡。

执行订单后遍历的一种方法:

  • 从根
  • 开始
    • 如果此节点的左子节点存在且未计算其高度,请访问其下一个左子节点。
    • 如果此节点的正确子节点存在且未计算其高度,则访问其下一个正确的子节点。
    • 否则
      • 计算此节点的高度,可能早点返回
      • 如果此节点不是根节点,请访问其父节点。
  • 如果达到此点,树就会平衡。