问题
假设一棵平衡二叉树的每个结点都表明了平衡因子 b,试设计一个算法,求
平衡二叉树的高度
解析
设根结点的层次为 1,循环遍历平衡二叉树,每遍历一层,高度+1,
直到遍历到层数最大的子树的叶子结点,所得高度值就是平衡二叉树的高度。遍
历原则为当结点的平衡因子 b 为 0 时,任选左右某一分支向下遍历;若 b 不为 0,
则当 b = 1 时沿左子树向下遍历,b = -1
代码
int Height(BSTree T)
{ //求平衡二叉树的高度
int level = 0;
p = T;
while(p)
{
level++; //树高度+1
if(p->b < 0) //b = -1 沿右子树向下遍历
p = p->rchild;
else //否则,b >= 0 沿着左子树向下遍历
p = p->lchild;
}
return level; //返回平衡二叉树的高度
}