已知一棵二叉树采用二叉链表存储,结点构造为 root指向根结点。请编写算法判断该二叉树是否是平衡二叉树,即二叉树中任意结点的左右子树的深度相差不超过1,例如下图所示的二叉树就是一棵平衡二叉树。 要求: 给出算法的基本设计思想。

admin2018-07-17  27

问题 已知一棵二叉树采用二叉链表存储,结点构造为

root指向根结点。请编写算法判断该二叉树是否是平衡二叉树,即二叉树中任意结点的左右子树的深度相差不超过1,例如下图所示的二叉树就是一棵平衡二叉树。

要求:
给出算法的基本设计思想。

选项

答案基本的基本设计思想: 设置二叉树的平衡标记balance,以标记返回二叉树bt是否为平衡二叉树,若为平衡二叉树,则返回1,否则返回0;h为二叉树bt的高度。采用前序遍历的递归算法: ①若bt为空,则高度为0,balance=1。 ②若bt仅有根结点,则高度为1,balance=1。 ③否则,对bt的左、右子树执行递归运算,返回左、右子树的高度和平衡标记,bt的高度为 最高子树的高度加1。若左、右子树的高度差大于1,则balance=0;若左、右子树的高度差小于 1,且左、右子树都平衡时,balance=1,否则balance=0。

解析
转载请注明原文地址:https://kaotiyun.com/show/jfRi777K
0

最新回复(0)