知识大全 数据结构考研分类复习真题 第六章 答案 (五)[25]
Posted 序列
篇首语:当筵意气临九霄,星离雨散不终朝。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[25]相关的知识,希望对你有一定的参考价值。
[题目分析]知二叉树中序序列与后序序列 第 题以递归算法建立了二叉树 本题是非递归算法
void InPostCreat(ElemType IN[] POST[] int l h l h ) //由二叉树的中序序列IN[]和后序序列POST[]建立二叉树 l h 和l h 分别是中序序列和 //后序序列第一和最后元素的下标 初始调用时 l =l = h =h =n typedef struct int l h l h ; BiTree t; node; node s[] p;//s为栈 容量足够大 BiTree bt=(BiTree)malloc(sizeof(BiNode)); int top= i; p l =l ; p h =h ; p l =l ; p h =h ; p t=bt; s[++top]=p;//初始化 while(top> ) p=s[top ]; bt=p t; l =p l ; h =p h ; l =p l ; h =p h ;//取出栈顶数据 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)); p t=bt >lchild; p l =l ; p h =i ; p l =l ; p h =l +i l ; s[++top]=p; if(i==h ) bt >rchild=null; //bt无右子树 else bt >rchild=(BiTree)malloc(sizeof(BiNode)); p t=bt >rchild; p l =i+ ; p h =h ; p l =l +i l ; p h =h ; s[++top]=p; //右子树数据入栈 // while(top> ) 结束InPostCreat .BiTree Copy(BiTree t)//复制二叉树t BiTree bt; if (t==null) bt=null; elsebt=(BiTree)malloc(sizeof(BiNode)); bt >data=t >data; bt >lchild=Copy(t >lchild); bt >rchild=Copy(t >rchild); return(bt); //结束Copy
cha138/Article/program/sjjg/201311/23703相关参考