中序和层次建二叉树,并前序输出(代码未测试完成,敬请期待)

    xiaoxiao2021-03-25  122

    #include<iostream> #include<stdlib.h> #include<string.h> using namespace std; struct Node{ Node *rchild; Node *lchild; char data; }; void preorder(Node *bt) { if(bt){ cout<<bt->data<<" "; if(bt->lchild!=NULL) preorder(bt->lchild); if(bt->rchild!=NULL) preorder(bt->rchild); } } Node *bt; char str1[20],str2[20]; Node *build(int l1,int e1,int l2,int e2){ int i,j; int idx; bt =new Node; bt->data=str1[l1]; for(i=l2;i<=e2;i++){ if(str1[l1]==str2[i]){ idx=i; break; } } int e=0; if(idx==l2) bt->lchild=NULL; else{ for(i=l1+1;i<=e2;i++) for(j=l2;j<i;j++){ if(str1[i]==str2[j]) e++; } bt->lchild=build(l1,e,l2,idx-1); } int E=0; if(idx==e2)bt->rchild=NULL; else{ for(i=l1+1;i<=e1;i++) for(j=idx+1;j<=e2;j++){ if(str1[i]==str2[j]) E++; } bt->rchild=build(l1,E,idx+1,e2); } return bt; } int main() { //Node *bt; cin>>str1; cin>>str2; int len1=strlen(str1); int len2=strlen(str2); bt=build(0,len1-1,0,len2-1); preorder(bt); system("pause"); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-7573.html

    最新回复(0)