博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]根据二叉树的先序、中序遍历结果重建二叉树
阅读量:6094 次
发布时间:2019-06-20

本文共 1929 字,大约阅读时间需要 6 分钟。

 

#include 
#include
typedef struct TNode { int value; TNode* lchild; TNode* rchild; }TNode,*BTree; //根据先序遍历、中序遍历构建二叉树 BTree rebuild(int preOrder[],int startPre,int endPre,int inOrder[],int startIn,int endIn) { //先序遍历和中序遍历长度应相等 if (endPre - startPre != endIn - startIn) return NULL; //起始位置不应大于末尾位置 if (startPre > endPre) return NULL; //先序遍历的第一个元素为根节点 BTree tree = (BTree)malloc(sizeof(TNode)); tree->value = preOrder[startPre]; tree->lchild = NULL; tree->rchild = NULL; //先序遍历和中序遍历只有一个元素时,返回该节点 if (startPre == endPre) return tree; //在中序遍历中找到根节点 int index,length; for (index=startIn;index<=endIn;index++) { if (inOrder[index] == preOrder[startPre]) break; } //若未找到,返回空 if (index > endIn) return NULL; //有左子树,递归调用构建左子树 if (index > startIn) { length = index-startIn; tree->lchild = rebuild(preOrder,startPre+1,startPre+1+length-1,inOrder,startIn,startIn+length-1); } //有右子树,递归调用构建右子树 if (index < endIn) { length = endIn - index; tree->rchild = rebuild(preOrder,endPre-length+1,endPre,inOrder,endIn-length+1,endIn); } return tree; } //后序遍历二叉树 void postTraverse(BTree tree) { if (tree->lchild != NULL) postTraverse(tree->lchild); if (tree->rchild != NULL) postTraverse(tree->rchild); printf("%d ",tree->value); } int main() { int preOrder[] = {
1,2,4,5,3,6}; int inOrder[] = {
4,2,5,1,6,3}; BTree tree = rebuild(preOrder,0,5,inOrder,0,5); postTraverse(tree); printf("\n"); return 0; }

 

转载于:https://www.cnblogs.com/alexeyqian/p/3435742.html

你可能感兴趣的文章
LeetCode 766. Toeplitz Matrix
查看>>
Java序列化反序列化对象流ObjectInputStream、ObjectOutputStream
查看>>
Spring与Mybatis的整合
查看>>
WinForm 弹框确认后执行
查看>>
Linux面试题
查看>>
! [rejected] master -> master (non-fast-forward)
查看>>
STL unique
查看>>
装饰自己的博客园界面
查看>>
django-返回客户端外网ip服务
查看>>
linux内核初始化控制流
查看>>
A Wasserstein Distance[贪心/模拟]
查看>>
推荐几个比较好的网站
查看>>
Project Euler 45 Triangular, pentagonal, and hexagonal( 二分 + 函数指针 )
查看>>
为什么成员属性不会被重写
查看>>
SQL Server, Cannot resolve the collation conflict
查看>>
VIM技巧:选择文本块
查看>>
10分钟了解JSON Web令牌(JWT)
查看>>
Python 函数
查看>>
java低级版的分页功能:只是备忘
查看>>
102422关系
查看>>