参考答案和解析
参考答案:因为二叉树各结点已标明了平衡因子b,故从根结点开始记树的层次。根结点的层次为1,每下一层,层次加1,直到层数最大的叶子结点,这就是平衡二叉树的高度。当结点的平衡因子b为0时,任选左右一分枝向下查找,若b不为0,则沿左(当b=1时)或右(当b=-1时)向下查找。
  [算法描述]
  int Height(BSTree t)
  // 求平衡二叉树t的高度
  {level=0;p=t;
  while(p)
  {level++; // 树的高度增1
  if(p->bf<0)p=p->rchild;//bf=-1 沿右分枝向下
  //bf是平衡因子,是二叉树t结点的一个域,因篇幅所限,没有写出其存储定义
  else p=p->lchild; //bf>=0 沿左分枝向下
  }//while
  return (level);//平衡二叉树的高度
  } //算法结束
更多“假设一棵平衡二叉树的每个结点都表明了平衡因子b,试设计一个算法,求平衡二叉树的高度。 ”相关问题
  • 第1题:

    假设在平衡二叉树上插入一个结点后造成了不平衡,其最近不平衡点为A,且已知A的左子树的平衡因子为-1,其右子树的平衡因子为0,应该进行()型调整可使二叉树平衡。

    A.LL

    B.RR

    C.LR

    D.RL


    O(n)

  • 第2题:

    【单选题】10.在一棵平衡二叉树中,每个结点的平衡因子取值范围是()。

    A.-1~1

    B.-2~2

    C.1~2

    D.0~1


    -1——1

  • 第3题:

    28、对一棵平衡二叉树,所有非叶结点的平衡因子都是0,当且仅当该树是完全二叉树。


    错误

  • 第4题:

    29、若一棵平衡二叉树的所有非叶结点的平衡因子都是0,则其必为完美二叉树。


    错误

  • 第5题:

    在非空的平衡二叉树中插入一个新结点,原有结点中至少一个结点的平衡因子会改变。