您的位置:首页 > 其它

根据二叉树遍历序列恢复二叉树

2015-09-22 23:19 274 查看
http://www.dutor.net/index.php/2009/08/generate-btree/

二叉查找树的前区后继问题:前驱为节点左子树的最大值,后继为右孩子的最小值

注意变种,实际上构建出的二叉树可能会有多种情况当data出现重复的时候,相等的地方都应该创建二叉树,然后返回二叉树的数组回去,每次都对数组里的每个元素处理


/*

* pre存放先序序列,

* in存放中序序列,

* n为结点个数,

* 返回二叉树根指针

*/

BTree CreateBT(Type * pre, Type * in, int n)

{

if(n <= 0)

return NULL;

BTree bt = new BTNode;

Type * p;

int k;

bt->data = *pre;

for(p = in; p < in + n; ++p)

if(*pre == *p)

break;

k = p - in;

bt->lchild = CreateBT(pre+1, in, k);

bt->rchild = CreateBT(pre+k+1, p+1, n-k-1);

return bt;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: