#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;
}
链式二叉树
猜你喜欢
转载自blog.csdn.net/Huangxu_MIKU/article/details/80424335
今日推荐
周排行