0
点赞
收藏
分享

微信扫一扫

数据结构(知识点碎片二十五)

金牛豆豆 03-18 19:45 阅读 2


数据结构(知识点碎片二十五)_二叉树

BTNode *CreateBT2 (char post[],char in[], int Ll, int Rl, int L2, int R2)
if(L1 > R1)
return NULL;
BTNode *s = (BTNode *)malloc(sizeof(BTNode)); 
s->lChild = s->rChild = NULL; 
s->data = post[Rl];
int i;
for(i = L2;i <= R2; ++i)
if(in[i] =- post[R1])
break;
s->lChild = CreateBT2(post, in, L1, L1+i-L2-1,L2,i-1); 
s->rChild = CreateBT2(post, in,L1+i-L2,R1-1,i+1,R2);
return s;
}

数据结构(知识点碎片二十五)_遍历_02

BTNode*CreateBT3(char level[],char in[], int n, int L, int R)
{
if(L > R)
return NULL;
BTNode *s = (BTNode *)malloc(sizeof(BTNode)); 
s->lChild = s->rChild = NULL; 
s->data = level[0];

int i = search(in,level[0],L,R);
int LN = i-L; char LLevel[LN]; 
int RN = R-i; char RLevel[RN];
getSubLevel(LLevel, level, in, n, L, i-1); 
getSubLevel(RLevel, level, in, n, i+l,R);
s->lChild = CreateBT3(LLevel, in, LN, L, i-l); 
s->rChild = CreateBT3(RLevel, in, RN,i+l,R);
return s;
}


int search(char arr[], char key, int L, int R)
{
int idx;
for(idx = L; idx <= R; ++idx)
if(arr[idx] == key)
return idx;
return -1;
}

void getSubLevel(char subLevel[],char level[],char in[],int n, int L, int R)
{
int k = 0;
for(int i= 0; i<n; ++i)
if (search(in, level[i],L,R)!= -1)
subLevel[k++] = level[i];
}

数据结构(知识点碎片二十五)_二叉树_03

数据结构(知识点碎片二十五)_遍历_04


举报

相关推荐

0 条评论