關於二叉樹建立的幾種方法
阿新 • • 發佈:2019-01-23
1.先根序遞迴法建立二叉樹(針對不需要總是問詢的情況,本人認為是最簡單的一種方法)
CreateTree(node *T)
{
char a;
cin>>a;
if(a=='#')
{
T=NULL;
}
else
{
T=new node;//T=(node *)malloc(sizeof(node));
T->data=a;
CreateTree(T->left);
CreateTree(T->right);
}
}
或者
Node* Create() { node *t=NULL; char a; cin>>a; if(a!='#') { t=new node; t->data=a; bt->left=Create(); bt->right=Create(); } return t; }
example: a
b c 輸入為ab##c##
2.與使用者互動的方式,根據使用者輸入根節點,data,parent,l/r;
node *find; CreateTree(node *p) { char sign; p=new node(); cout<<"Input root:"; cin>>p->data; do{ cout<<"Input data ,parent, L/R:" char c; int t,par; cin>>t>>par>>c; node *temp=new node; temp->data=t; if(c=='L') { find->left=temp; } else { find->right=temp; } cout<<"Any else?------y/n"; cin>>sign; }while(sign=='y'); } void Find(node *p,int par){ if(p1!=NULL) { if(p->data==par) { find=p; return; } else { Find(p->left); Find(p->right); } } }