二叉树的构造、遍历

作者在 2008-04-27 17:43:02 发布以下内容

二叉树的构造、遍历
//2008.04.12
#include<stdio.h>
#include<iostream>
using namespace std;
struct binaryTreeNode
{
 char data;
 struct binaryTreeNode *lefttree,*righttree;
};
typedef struct binaryTreeNode BinaryTree;
char ch=' ';
void CreateTree(BinaryTree *&tree)

 if(ch!='\n')
 { ch=getchar();
    if(ch=='\n')
     return;
       if(ch=='.')
      tree=NULL;
     else
  {
     tree=new BinaryTree;    
     tree->data=ch;
     tree->lefttree=NULL;
     tree->righttree=NULL;
           CreateTree(tree->lefttree);
     CreateTree(tree->righttree);
  }
 }
 else return;
}

void PreOrder(BinaryTree *tree)
{
 if(tree!=NULL)
 {  
  putchar(tree->data);
     PreOrder(tree->lefttree);
  PreOrder(tree->righttree);
 }
}

void InOrder(BinaryTree *tree)
{
 if(tree!=NULL)
 {  
  InOrder(tree->lefttree);
  putchar(tree->data);
  InOrder(tree->righttree);
 }
}

void PostOrder(BinaryTree *tree)
{
 if(tree!=NULL)
 {  
  PostOrder(tree->lefttree);  
  PostOrder(tree->righttree);
  putchar(tree->data);
 }
}

int main()
{
 BinaryTree *t=NULL;
 cout<<"(输入时以前序和完全二叉树的形式,空结点用'.'代替,遇到叶子结点时加输两个'.')"<<endl;
 cout<<"请输入一串字符串:"<<endl;
 CreateTree(t);
 cout<<"按前序遍历:"<<endl;
 PreOrder(t);
 cout<<endl;
 cout<<"按中序遍历:"<<endl;
 InOrder(t);
 cout<<endl;
 cout<<"按后序遍历:"<<endl;
 PostOrder(t);
 cout<<endl;
 return 0;
}

默认分类 | 阅读 2914 次
文章评论,共0条
游客请输入验证码
文章分类