鏈式二叉樹
阿新 • • 發佈:2018-12-02
#include<iostream> using namespace std; struct Node { char date; Node*l,*r,*parent; }; class Tree { Node *root; Node *Creat(Node*b); void Release(Node*b); void Preorder(Node*b); void Inorder(Node*b); void Postorder(Node*b); void Information(Node*b); public: Tree(){root=Creat(root);} ~Tree(){Release(root);} void Preorder(){Preorder(root);} void Inorder(){Inorder(root);} void Postorder(){Postorder(root);} void Information(){Information(root);} }; Node*Tree::Creat(Node*b) { root->parent=NULL; char a; cout<<"Input:"; cin>>a; if(a==NULL) b=NULL; else { b=new Node; b->date=a; b->l->parent=b,b->r->parent=b; b->l=Creat(b->l); b->r=Creat(b->r); } return b; } void Tree::Preorder(Node*b) { if(b==NULL) return; else { cout<<b->date<<" "; Preorder(b->l); Preorder(b->r); } } void Tree::Inorder(Node*b) { if(b==NULL) return; else { Inorder(b->l); cout<<b->date<<" "; Inorder(b->r); } } void Tree::Postorder(Node*b) { if(b==NULL) return; else { Postorder(b->l); Postorder(b->r); cout<<b->date<<" "; } } void Tree::Information(Node*b) { if(b->parent==NULL) cout<<"no parent!"<<endl; else cout<<"parent:"<<b->parent<<endl; if(b->l!=NULL) { cout<<"lchild:"<<b->l->date<<endl; } else cout<<"no lchild!"<<endl; if(b->r!=NULL) { cout<<"rchild:"<<b->r->date<<endl; } else cout<<"no rchild"<<endl; } void Tree::Release(Node*b) { if(b!=NULL) { Release(b->l); Release(b->r); delete b; } } int main() { Tree tree; tree.Preorder(); tree.Postorder(); tree.Inorder(); tree.Information(); return 0; }