建立先序二叉樹-建立層次遍歷樹

建立先序二叉樹ios

#include<iostream>
using namespace std;
class BinTreeNode
{
public:
    char ch;
    BinTreeNode(int value){ch=value;}
    BinTreeNode *left,*right;
};
BinTreeNode* create_tree()
{
    char item;
    BinTreeNode *t,*t_l,*t_r;
    cin>>item;
    if(item!='#')
    {
        BinTreeNode *pTmpNode=new BinTreeNode(item);
        t=pTmpNode;
 t_l=create_tree();
 t->left=t_l;
 t_r=create_tree();
  t->right=(t_r);
 return t;
    }
    else
    {
 t=NULL;
 return t;
    }
}
void midsearch(BinTreeNode *root)
{
    if(root!=NULL)
 cout<<(root->ch);
    else
 return ;
    midsearch(root->left);
    midsearch(root->right);
}
void leftsearch(BinTreeNode *root)
{
    if(root==NULL)
 return ;
    leftsearch(root->left);
    cout<<(root->ch);
    leftsearch(root->right);
}
void rightsearch(BinTreeNode *root)
{
    if(root==NULL)
 return ;
    rightsearch(root->left);
    rightsearch(root->right);
    cout<<(root->ch);
}
int main()
{
    BinTreeNode *root=create_tree();
    midsearch(root);  //先序遍歷
    cout<<endl;
    leftsearch(root); //中序遍歷
    cout<<endl;
    rightsearch(root); //後序遍歷
    cout<<endl;
    return 0;
}




建立層次遍歷樹ide

#include<iostream>
#include<queue>
using namespace std;
class BinTreeNode
{
public:
    char ch;
    BinTreeNode(char value){ch=value;}
    BinTreeNode *left,*right;
    char get_data();
    BinTreeNode* get_left();
    BinTreeNode* get_right();
};
char BinTreeNode::get_data()
{
    return ch;
}
BinTreeNode* BinTreeNode::get_left()
{
    return left;
}
BinTreeNode* BinTreeNode::get_right()
{
    return right;
}
BinTreeNode* level_create()
{
    char data,data1,data2;
    BinTreeNode* r;
    cin>>data;
    if(data=='#')
 return r;
    r=new BinTreeNode(data);
    deque<BinTreeNode*> q;
    q.push_back(r);
    while(!q.empty())
    {
 BinTreeNode *p=q.front();
 q.pop_front();
 cin>>data1;
        if(data1!='#')
        {
     p->left=new BinTreeNode(data1);
     q.push_back(p->left);
 }
  cin>>data2;
 if(data2!='#')
 {
     p->right=new BinTreeNode(data2);
     q.push_back(p->right);
 }
    }
    return r;
}
void midsearch(BinTreeNode *root)
{
    if(root!=NULL)
 cout<<(root->ch);
    else
 return ;
    midsearch(root->left);
    midsearch(root->right);
}
void leftsearch(BinTreeNode *root)
{
    if(root==NULL)
 return ;
    leftsearch(root->left);
    cout<<(root->ch);
    leftsearch(root->right);
}
void rightsearch(BinTreeNode *root)
{
    if(root==NULL)
 return ;
    rightsearch(root->left);
    rightsearch(root->right);
    cout<<(root->ch);
}
void level_order(BinTreeNode *r)
{
    if(r==NULL)
 return ;
    deque<BinTreeNode*> q;
    q.push_back(r);
    while(!q.empty())
    {
 BinTreeNode *p=q.front();
 cout<<p->get_data()<<" ";
 q.pop_front();
 if(p->get_left()!=NULL)
 {
     q.push_back(p->get_left());
 }
 if(p->get_right()!=NULL) 
 {
     q.push_back(p->get_right());
 }
    }
}
int main()
{
    BinTreeNode *root=level_create();
    midsearch(root); //先序遍歷
    cout<<endl;
    leftsearch(root); //中序遍歷
    cout<<endl;
    rightsearch(root); //後序遍歷
    cout<<endl;
    level_order(root); //層次遍歷
    cout<<endl;
    return 0;
}


以上兩個程序都是根據已有的遍歷結果來建立對應的樹
spa

相關文章
相關標籤/搜索