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

Posted 结点

篇首语:智慧并不产生于学历,而是来自对于知识的终生不懈的追求。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[7]相关的知识,希望对你有一定的参考价值。

   [题目分析]二叉树采用顺序存储结构(一维数组)是按完全二叉树的形状存储的 不是完全二叉树的二叉树顺序存储时 要加 虚结点 数组中的第一个元素是根结点 本题中采用队列结构

  typedef struct  BiTree bt;        //二叉树结点指针  int num; tnode   // num是结点在一维数组中的编号  tnode  Q[maxsize];   //循环队列 容量足够大  void  creat(BiTree T ElemType BT[ ])  //深度h的二叉树存于一维数组BT[ : h ]中 本算法生成该二叉树的二叉链表存储结构  tnode tq;        //tq是队列元素  int len= h ;    //数组长度  T=(BiTree)malloc(sizeof(BiNode)); //申请结点  T >data=BT[ ];                    //根结点数据  tq bt=T; tq num= ;  Q[ ]=tq;                 //根入队列  front= ;rear= ;          //循环队列头 尾指针  while(front!=rear)       //当队列不空时循环  front=(front+ ) % maxsize ;  tq=Q[front] ; p=tq bt; i=tq num ;             //出队 取出结点及编号  if (BT[ *i]== # || *i>len) p >lchild=null;  //左子树为空 # 表示虚结点  else   //建立左子女结点并入队列  p >lchild=(BiTree) malloc(sizeof(BiNode)); //申请结点空间  p >lchilddata=BT[ *i];                    // 左子女数据  tq bt=p >lchild; tq num= *i; rear=(rear+ ) % maxsize ;//计算队尾位置  Q[rear]=tq;            //左子女结点及其编号入队    if(BT[ *i+ ]== # || *i+ >len) p >rchild=null; //右子树为空  else    //建立右子女结点并入队列  p >rchild=(BiTree)malloc(sizeof (BiNode); //申请结点空间  p >rchild >data=BT[ *i+ ]; tq bt=p >rchild; tq num= *i+ ;  rear=(rear+ )%maxsize; Q[rear]=tq;  //计算队尾位置 右子女及其编号入队     //while  //结束creat

  [算法讨论] 本题中的虚结点用 # 表示 应根据二叉树的结点数据的类型而定

cha138/Article/program/sjjg/201311/23737

相关参考

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