帮我看以下二叉树的前序,中序恢复问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 23:16:52
//定义二叉树节点
template<class T>
struct BinTreeNode
{
T info; //数据域
BinTreeNode* llink; //左孩子
BinTreeNode* rlink; //右孩子
};

template<class T>
BinTreeNode<T>* Restore(const T pre[],const T in[],int &count,int low,int high,const int n)
{
/*
pre,in 分别存储所需恢复二叉树的前序[1:n],中序[1:n],首元素不用的。
count-前序数组的下标
low,high确定二叉树的中序边界
思路:将前序的每一个元素当做根节点,然后到中序中找到这个元素,然后再按:左,中,右,的顺序确定之
*/
BinTreeNode<T>*p;
if(count>n)
{
p=NULL;
return p;
};

p=new BinTreeNode<T>;
if(!p)
{
cout<<"内存分配失败!"<<endl;
exit(0);
}
if(low==high&&pre[count]==in[low]) //扫描到叶子节点
{
p->info=pre[count];
p->llink=NULL;
p->rlink=NULL;
return p;
}
//扫描到非叶子节点
for(int i=low;i<=high&&in[i]!=pre[count];i++

我看不太懂楼主的程序。
我自己也写了一个二叉树的恢复程序,采用的方法跟楼主的相似。请楼主参考一下:
http://zhidao.baidu.com/question/76463513.html
我写的注释不多,如果楼主感兴趣可以用百度消息共同探讨一下。

很经典的问题,楼主自己百度一下啊。