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

Posted 结点

篇首语:努力尽今夕,少年犹可夸。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[35]相关的知识,希望对你有一定的参考价值。

   [题目分析]按题目要求 每个结点的编号大于其左右孩子的编号 结点左孩子的编号小于右孩子的编号 由此看出 从小到大按 左右根 顺序 这正是后序遍序的顺序 故对二叉树进行后序遍历 在遍历中对结点进行编号 现将二叉树结点结构定义如下

  typedef struct node  ElemType data; int num; struct node *lchild *rchild; Bnode *Btree   void PostOrder(Btree t)  //对二叉树从 开始编号 结点编号大于其左右子女结点编号 结点的左子女编号小于其右子女编号  typedef struct Btree t; int tag;   node;  Btree p=t; node sn s[];    //s为栈 容量足够大  int  k= top= ; //k为结点编号 top为栈顶指针  while(p!=null || top> )  while(p) sn t=p; sn tag= ; s[++top]=sn; p=p >lchild; //沿左分枝向下  while(top> && s[top] tag== )sn=s[top ];sn t >num=++k;//左右孩子已遍历 结点赋编号  if (top> ) s[top] tag= ; p=s[top] t >rchild;  //while(p!=null || top> )  结束PostOrder

   [题目分析]非递归算法参考上面第 题 下面给出递归算法

  void PreInCreat(BiTree root ElemType pre[] in[] int l h l h )  //根据二叉树前序序列pre和中序序列in建立二叉树 l h l h 是序列第一和最后元素下标   root=(BiTree)malloc(sizeof(BiNode)); //申请结点  root >data=pre[l ];  //pre[l ]是根  for(i=l ;i<=h ;i++) if(in[i]==pre[l ]) break; //在中序序列中 根结点将树分成左右子树  if(i==l ) root >lchild=null; //无左子树  else PreInCreat(root >lchild pre in l + l +(i l ) l i ) //递归建立左子树  if(i==h ) root >rchild=null;  //无右子树  else PreInCreat((root) >rchild pre in l +(i l )+ h i+ h ) //递归建立右子树  //结束PreInCreat

cha138/Article/program/sjjg/201311/23713

相关参考

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[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