知识大全 数据结构考研分类复习真题 第六章 答案 (五)[29]

Posted 结点

篇首语:冲天香阵透长安,满城尽带黄金甲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[29]相关的知识,希望对你有一定的参考价值。

   [题目分析] 由定义 结点的平衡因子bf等于结点的左子树高度与右子树高度之差 设计一遍历算法 在遍历结点时 求结点的左子树和右子树的高度 然后得到结点的平衡因子

  int Height(BiTree bt)//求二叉树bt的深度  int hl hr;  if (bt==null) return( );  else hl=Height(bt >lchild); hr=Height(bt >rchild);  if(hl>hr) return (hl+ ); else return(hr+ );    // Height  void  Balance(BiTree bt)  //计算二叉树bt各结点的平衡因子  if (bt)  Balance(bt >lchild); //后序遍历左子树  Balance(bt >rchild); //后序遍历右子树  hl=Height(bt >lchild); hr=Height(bt >rchild);//求左右子树的高度  bt >bf=hl hr; //结点的平衡因子bf     //算法结束

   [题目分析]本题应采用层次遍历方式 若树不空 则二叉树根结点入队 然后当队列不空且队列长不超过n 重复如下操作 出队 若出队元素不为空 则记住其下标 且将其左右子女入队列 若出队元素为空 当作虚结点 也将其 虚子女 入队列 为节省空间 就用树T的顺序存储结构A[ n]作队列 队头指针front 队尾指针rear 元素最大下标last

  void  Traverse(BiTree bt int n)  // 求二叉树bt的顺序存储结构A[ n] 下标超过n报错 给出实际的最大下标  BiTree A[] p;  if(bt!=null)  int front= rear= last= ; A[ ]=bt;  while(front<=rear)  p=A[++front]; if(p) last=front; // 出队;用last记住最后一个结点的下标  rear= *front;//计算结点(包括虚结点) 左子女 下标  if (p)       //二叉树的实际结点  if(rear>n)   printf( %c结点无左子女 ); else A[rear]=p >lchild;  if(rear+ >n) printf( %c结点无右子女 ); else A[rear+ ]=p >rchild;    else //p是虚结点   if(rear<=n) A[rear]=null; if(rear+ <=n) A[rear+ ]=null;   // while(front<=rear)  printf( 实际的最大下标是%d last);  //if(bt!=null)   //Traverse

cha138/Article/program/sjjg/201311/23707

相关参考

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[23]

  PROCprint(bt:BiTreexy:integer)  //将二叉树逆时针旋转度打印xy是根结点基准坐标调用时xy=  IFbt<>NILTHEN[print(bt↑rchil

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[19]

  intLevel(BiTreebt)//层次遍历二叉树并统计度为的结点的个数  intnum=;//num统计度为的结点的个数  if(bt)QueueInit(Q);QueueIn(Qbt)//

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[47]

  .BiThrTreeInSucc(BiThrTreeTp) //在对称序穿线树T中查找给定结点p的中序后继  if(p>rtag==)q=p>rchild; &nb

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[33]

  intBTLC(BiTreeTint*c)//对二叉树T的结点计数  if(T)  *c++;  BTLC(T>lchild&c);//统计左子树结点  BTLC(T>rchi

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[45]

  voidInOrderThreat(BiThrTreethrt)  //thrt是指向中序全线索化头结点的指针本算法中序遍历该二叉树  p=thrt>lchild; //p指向二叉

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[34]

  .intCount(BiTree bt)//非递归遍历求二叉树上的叶子结点个数  intnum=;  BiTrees[];//s是栈栈中元素是二叉树结点指针栈容量足够大  whlie(b

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[25]

  [题目分析]知二叉树中序序列与后序序列第题以递归算法建立了二叉树本题是非递归算法  voidInPostCreat(ElemTypeIN[]POST[]intlhlh)  //由二叉树的中序序列I

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[15]

  [题目分析]先序遍历二叉树的非递归算法要求进栈元素少意味着空指针不进栈  voidPreOrder(Bitree bt)//对二叉数bt进行非递归遍历  inttop=;Bitrees[

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[6]

  .BiTreeCreat(ElemTypeA[]inti)  //n个结点的完全二叉树存于一维数组A中本算法据此建立以二叉链表表示的完全二叉树  BiTreetree;  if(i<=n)t

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[4]

  .[题目分析]当森林(树)以孩子兄弟表示法存储时若结点没有孩子(fch=null)则它必是叶子总的叶子结点个数是孩子子树(fch)上的叶子数和兄弟(nsib)子树上叶结点个数之和  typedef