由先序和中序遍历序列建立二叉树

voidPreInOrd( char preord[],char inord[],int i, int j, int k, int h, BiTree t)
{ 
/* 先序序列中从i到j,中序从序列从k到h,建立一棵二叉树放在t中 i j为 preord[]的下标 k h 为inord[]的下标*/ 
int m; 
(*t)=new BiNode;
 (*t)->data=preord[i]; 
  /*二叉树的根*/ 
  m=k;
   while(inord[m]!=preord[i]) m++; /*在中序序列中定位树根*/ /*递归调用建立左子树*/ 
   if(m==k) (*t)->lchild=NULL;    /*左子树空*/ 
   else
   PreInOrd(preord, inord, i+1, i+m-k, k, m-1, &((*t)->lchild));/*递归调用建立右子树*/    if(m==h) 
   (*t)->rchild=NULL;   /*右子树空*/ 
   else
   PreInOrd( preord, inord, i+m-k+1, j, m+1, h, &((*t)->lchild)); } 
   void CreateBiTree(char preord[], char inord[], int n, BiTree root){ /* n 为二叉树结点的个数,建立的二叉树放在root中*/ 
   if(n<=0) root=NULL; 
   else
   PreInOrd(preord, inord, 1, n,1, n, &root); 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值