熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

數據結構考研分類復習真題 第六章 答案 (五)[25]

2013-11-15 15:37:38  來源: 數據結構 

  [題目分析]知二叉樹中序序列與後序序列題以遞歸算法建立了二叉樹本題是非遞歸算法

  void InPostCreat(ElemType IN[]POST[]int lhlh)
  //由二叉樹的中序序列IN[]和後序序列POST[]建立二叉樹lh和lh分別是中序序列和
  //後序序列第一和最後元素的下標初始調用時l=l=h=h=n
  {typedef struct {int lhlh; BiTree t; }node;
  node s[]p;//s為棧容量足夠大
  BiTree bt=(BiTree)malloc(sizeof(BiNode)); int top=i;
  pl=l; ph=h; pl=l; ph=h; pt=bt; s[++top]=p;//初始化
  while(top>)
  {p=s[top]; bt=pt; l=pl; h=ph; l=pl; h=ph;//取出棧頂數據
  for(i=l;i<=h;i++) if(IN[i]==POST[h]) break;//在中序序列中查等於POST[h]的結點
  bt>data=POST[h];     //根結點的值
  if(i==l) bt>lchild=null;    //bt無左子樹
  else   //將建立左子樹的數據入棧
  {bt>lchild=(BiTree)malloc(sizeof(BiNode)); pt=bt>lchild;
  pl=l; ph=i; pl=l; ph=l+il; s[++top]=p; }
  if(i==h) bt>rchild=null;    //bt無右子樹
  else {bt>rchild=(BiTree)malloc(sizeof(BiNode)); pt=bt>rchild;
  pl=i+; ph=h; pl=l+il; ph=h; s[++top]=p;  }//右子樹數據入棧
  }// while(top>)
  }結束InPostCreat
  .BiTree  Copy(BiTree  t)//復制二叉樹t
  {BiTree bt;
  if (t==null) bt=null;
  else{bt=(BiTree)malloc(sizeof(BiNode)); bt>data=t>data;
  bt>lchild=Copy(t>lchild);
  bt>rchild=Copy(t>rchild);
  }
  return(bt); }//結束Copy

[]  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/sjjg/201311/23703.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.