举例来说,可以很容易地分析根据先后顺序和中顺序序列制作二叉树的方法
如何设计已知中序序列和前导序列的算法树,基本上离不开整个递归树,可以分为左部分树根、右部分树、左右部分树。 同样,可以分为这样的结构。 我们只需要改变函数调用时传递的参数分析图即可
voidCRTBt(t,pre )、ino (,ps,is,n ) )根据顺序和中顺序的序列来制作二叉树的递归算法的参数是根节点的顺序的序列中的顺序的序列的第一个节点中的顺序的序列的第一个节点//寻找中序序列中根节点的位置if (k==-1 ) T==NULL; //根节点上没有序列错误的else{t=(bitnode* ) malloc ) sizeof ) bitnode ); //根节点T-date=pre[ps]; //根节点值域是先前序列的第一个节点if(k==is ) T-lchild=NULL; //左子树是空的Elsecrtbt(t-lchild,pre[],ino[],ps 1,is,k-is ); //左子树相关参数if(k==isn-1 ) T-rchild=NULL; //右边的子树是空的Elsecrtbt(t-rchild,pre[],ino[],PS1 ) k-is ),k 1,n-() k-is )-1 ); //传递关于右部分树的参数}}这样算法就被设计好了~