用结构做的二叉树

来源:互联网 发布:适合25岁用的精华 知乎 编辑:程序博客网 时间:2024/05/21 11:05

typedef struct tree
{
 int data;
 struct tree *right,*left;
}Node,*Tree;

void InsertTree(Tree &RootTree,Tree NewTree)
{
 assert(NewTree!=NULL);

 if(RootTree==NULL)
 {
  RootTree=NewTree;
 }
 else
 {
  if(RootTree->data==NewTree->data)
   return;
  else
   if(RootTree->data>NewTree->data)//插左边
   {
    InsertTree(RootTree->left,NewTree);
   }
   else//插右边
   {
    InsertTree(RootTree->right,NewTree);
   }
 }
}

void CreateNode(Tree &RootTree)
{
 int data;
 scanf("%d",&data);
 Tree NewTree=NULL;
 NewTree=(Tree)malloc(sizeof(Node));
 NewTree->data=data;
 NewTree->left=NULL;
 NewTree->right=NULL;
 InsertTree(RootTree,NewTree);
}

void PrintTree(Tree RootTree)
{
 if(RootTree!=NULL)
 {
  PrintTree(RootTree->left);
  printf("%d-",RootTree->data);
  PrintTree(RootTree->right);
 }
}

int main(array<System::String ^> ^args)
{
 Tree tree=NULL;
 char ch='y';
 while(ch!='n')
 {
  CreateNode(tree);
  scanf("%c",&ch);
 }
 PrintTree(tree);
 getchar();
 getchar();
 return 1;

原创粉丝点击