重建二叉树(先序+中序 : 中序+后序)
2012-12-17 10:40
411 查看
由中序遍历 分别和前序遍历,后序遍历进行建树的方法:
// 由中序和后序遍历序列进行建树, 返回根结点指针
Node * InPostCreateTree(int *mid,int *post,int len){
if(len == 0)
return NULL;
int i=len-1;
while(post[len-1] != mid[i])
--i;
Node *h=NewNode();
h->data=post[len-1];
h->left=InPostCreateTree(mid,post,i);
h->right=InPostCreateTree(mid+i+1,post+i,len-i-1);
return h;
}
// 由前序和中序遍历序列进行建树, 返回根结点的指针
Node * PreInCreateTree(int *mid,int *pre,int len) //n标识s2的长度
{
if(len==0)
return NULL;
int i = 0;
while(*mid != pre[i])
++i;
Node *h=NewNode();
h->data= *mid;
h->left = PreInCreateTree(mid+1, pre, i);
h->right = PreInCreateTree(mid+i+1, pre+i+1, len-i-1);
return h;
}
// 由中序和后序遍历序列进行建树, 返回根结点指针
Node * InPostCreateTree(int *mid,int *post,int len){
if(len == 0)
return NULL;
int i=len-1;
while(post[len-1] != mid[i])
--i;
Node *h=NewNode();
h->data=post[len-1];
h->left=InPostCreateTree(mid,post,i);
h->right=InPostCreateTree(mid+i+1,post+i,len-i-1);
return h;
}
// 由前序和中序遍历序列进行建树, 返回根结点的指针
Node * PreInCreateTree(int *mid,int *pre,int len) //n标识s2的长度
{
if(len==0)
return NULL;
int i = 0;
while(*mid != pre[i])
++i;
Node *h=NewNode();
h->data= *mid;
h->left = PreInCreateTree(mid+1, pre, i);
h->right = PreInCreateTree(mid+i+1, pre+i+1, len-i-1);
return h;
}
相关文章推荐
- Construct Binary Tree from Preorder and Inorder Traversal 前序和中序重建二叉树
- 根据先序和中序序列重建二叉树
- 输入前序/后序+中序 遍历结果重建二叉树(递归)
- 由前序遍历和中序遍历重建二叉树
- 根据前序和中序遍历重建二叉树
- 根据前序遍历和中序遍历重建二叉树的Java实现
- 根据前序遍历序列和中序遍历序列重建二叉树
- Binary Tree——给定二叉树的前序遍历和中序遍历重建二叉树
- Construct Binary Tree from Inorder and Postorder Traversal 中序和后序重建二叉树
- 根据中序和后序序列重建二叉树 Construct Binary Tree from Inorder and Postorder Traversal
- 根据前序遍历和中序遍历重建二叉树
- java-从先序遍历和中序遍历重建二叉树
- 据前序遍历和中序遍历重建二叉树
- 根据前序遍历和中序遍历重建二叉树
- 根据中序和先序重建二叉树+二叉树的镜像+二叉树的深度+判断后序序列+判断子树
- 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 刷题之路----根据前序遍历和中序遍历或者后序遍历和中序遍历重建二叉树
- [面试] 根据前序和中序重建二叉树,并且中序非递归遍历
- 前序+中序 /前序+后序/中序+后序重建二叉树
- 由前序遍历和中序遍历重建二叉树