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

Posted 下标

篇首语:行是知之始,知是行之成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[8]相关的知识,希望对你有一定的参考价值。

   .[题目分析]本题静态链表中结点是按动态二叉链表的前序遍历顺序存放的 首先对动态二叉链表的二叉树进行前序遍历 填写静态链表的 下标 和data域 再对动态二叉链表的二叉树进行层次遍历 设队列Q 填写静态链表的lchild域和rchild域

  typedef struct node        //静态链表结点结构  ElemType data;          //结点数据  int row lchild rchild ; //下标 左右子女  ponent   ponent st[];  //st容量足够大  struct node BiTree t; int idx; qbt;  static int num= ;  void PreOrder(BiTree bt);  // 前序遍历二叉树 填写静态链表的 下标 和data域  if (bt)  st[++num] data=bt >data; st[num] row=num;  PreOrder(bt >lchild); PreOrder(bt >rchild);     int Locate(ElemType x)  //在静态链表中查二叉树结点的下标  for (i= ;i<=num;i++) if (st[i] data==x) return (i);    void DynaToST (BiTree bt)  //将二叉树的动态二叉链表结构转为静态链表结构  int i= ;       //i为静态链表st的下标  if (bt!=null)  QueueInit(Q);  //Q是队列 容量足够大 队列元素是qbt  qbt t=bt; qbt idx= ; QueueIn(Q qbt); st[ ] data=bt >data;  while(!QueueEmpty(Q))  qbt=QueueOut(Q);       //出队列  p=qbt t; i=qbt idx;    //二叉树结点及在静态链表中的下标  if (p >lchild!=null)   //若左子女存在 查其在静态链表中的下标 填lchild域值  lch=Locate(p >lchild >data) st[i] lchild=lch;  qbt t=p >lchild; qbt idx=lch;  QueueIn(Q qbt);   else st[i] lchild= ;   //无左子女 其lchild域填   if (p >rchild!=null)   //若右子女存在 查其在静态链表中的下标 填rchild域值  rch=Locate(p > >rchild >data) st[i] rchild=rch;  qbt t=p >rchild; qbt idx=rch;  QueueIn(Q qbt);   else st[i] rchild= ;   //无左子女 其lchild域填   //while  //结束DynaToST

cha138/Article/program/sjjg/201311/23738

相关参考