C++实现二叉树

来源:互联网 发布:java环境变量配置win10 编辑:程序博客网 时间:2024/05/17 21:40
#include <iostream>using namespace std ;class Tree{    public :        int number ;         class Tree *left ;         class Tree *right ;        void insert_tree(class Tree **header , int number) ;        void print_tree(class Tree *header , int lever) ;        void front(class Tree *header) ;        void middle(class Tree *header) ;        void back(class Tree *header) ;   };int main(){    Tree tree ;    Tree *header = NULL ;     int i ;    int buffer[10] ;    for(i = 0 ; i < 10 ; i++)    {        buffer[i] = rand()%100 ;    }     for(i = 0 ; i < 10 ; i++)    {        tree.insert_tree(&header , buffer[i]) ;      }    tree.print_tree(header,0);    cout << endl<< "前序遍历: " <<endl ;    tree.front(header) ;     cout << endl << "中序遍历: "<< endl ;    tree.middle(header) ;     cout << endl << "后序遍历: " << endl ;    tree.back(header);      getchar(); }void Tree::insert_tree(class Tree **header , int number){    Tree *New = NULL ;    New = new Tree[10] ;    if(NULL == New)   return ;New->number = number ;     New->left = NULL ;     New->right = NULL ; Tree **link = header ; Tree *cur ; while(cur = *link){ if(New->number < cur->number)link = &(cur->left) ;elselink = &(cur->right) ; }*link = New ;  }void Tree::print_tree(Tree *header , int lever){    if(header == NULL)return ; print_tree(header->right , lever+1);int i ; for(i = 0 ; i < lever ; i++)cout<<'\t';cout << header->number << endl;print_tree(header->left , lever+1);}void Tree::front(class Tree *header){    if(header == NULL)return ; cout <<' '<<header->number ;front(header->left);front(header->right);}void Tree::middle(class Tree *header){    if(header == NULL)return ; middle(header->left);    cout<<' '<< header->number ;middle(header->right);}void Tree::back(class Tree *header){    if(header == NULL)return ; back(header->left);back(header->right);cout <<' '<<header->number ;}

0 0
原创粉丝点击