C++数据结构,二叉树遍历

如题所述

#include<iostream>
#include<cstring>
#include<cstdio>
#include<windows.h>
using namespace std;
struct Node{
    int val;
    Node *left,*right;
    Node(int val=0):val(val),left(NULL),right(NULL){}
    ~Node(){
        if(left!=NULL) delete(left);
        if(right!=NULL) delete(right);
    }
};
void bianli(Node *now){
    if(now==NULL) return;
    cout<<now->val<<' ';
    bianli(now->right);
    bianli(now->left);
}
void build(Node *now){
    int val;
    char c;
    cout<<"Please input the val: ";
    cin>>val;
    now->val=val;
    cout<<"does node "<<val<<"  have left node?(Y/N) ";
    cin>>c;
    if(c=='Y'){
         now->left=new Node();
         build(now->left);
    }
    cout<<"does node "<<val<<"  have right node?(Y/N) ";
    cin>>c;
    if(c=='Y'){
         now->right=new Node();
         build(now->right);
    }
}
int main(){
    bool isContinue=1;
    while(isContinue){
        Node *root=new Node();
        cout<<"Start Build:"<<endl;
        build(root);
        cout<<"Start bianli:"<<endl;
        bianli(root);
        cout<<endl;
        system("pause");
        delete(root);
    }
}

温馨提示:答案为网友推荐,仅供参考
相似回答