ツリーの並べ替え/二叉検索ツリー/二叉検索ツリー


ツリーの並べ替え/二叉検索ツリー/二叉検索ツリー
特徴
  • におけるシーケンシャルの結果は、インクリメントシーケンス
  • である必要がある.
  • 辞書シーケンス(階層順)の最小エルゴード方法は、前の順序
  • を巡回したものである.
    構造体定義
    struct node
    {
        int data;
        node *lc;
        node *rc;
    };
    木を建てる
    //       
    void create(node *&root,int t)
    {
        if(root==NULL)
        {
            root=new node;
            root->data=t;
            root->lc=NULL;
            root->rc=NULL;
        }
        else if(t< root->data) create(root->lc,t);
        else create(root->rc,t);
    }
    前の順序(階層、辞書順)を巡回します.
    int flag;
    int pre[10010];
    //    
    void preorder(node *root)
    {
        if(root)
        {
            //if(flag!=0) cout<
            cout<data;//  1 2 3 4 5  
            ///pre[a++]=root->data;///    12345  
            //flag=1;
            preorder(root->lc);
            preorder(root->rc);
        }
    }
    
    int main()
    {
        int n,num;//n  , num    
        node *root=NULL;
        for(int i=0;i>num;
            create(root,num);
        }
        /*char n[17];//    
        node *root=NULL;
        cin>>n; 
        for(int i=0;i
        //flag=0;//             
        ///a=0;
        preorder(root);
        cout<
    センターフォワード
    int flag;
    int in[10010];
    //     
    void inorder(node *root)
    {
        if(root)
        {
            inorder(root->lc);
            //if(flag!=0) cout<
            cout<data;//  1 2 3 4 5  
            ///in[b++]=root->data;///    12345  
            //flag=1;//             
            inorder(root->rc);
        }
    }
    
    int main()
    {
        int n,num;//n  , num    
        node *root=NULL;
        for(int i=0;i>num;
            create(root,num);
        }
        /*char n[17];//     
        node *root=NULL;
        cin>>n;
        for(int i=0;i
        //flag=0;//             
        ///b=0;
        inorder(root);
        cout<
    後序を巡回
    int flag;
    int post[10010];
    //     
    void postorder(node *root)
    {
        if(root)
        {
            postorder(root->lc);
            postorder(root->rc);
            //if(flag!=0) cout<
            cout<data;//  1 2 3 4 5  
            ///in[b++]=root->data;///    12345  
            //flag=1;//             
        }
    }
    
    int main()
    {
        int n,num;//n  , num    
        node *root=NULL;
        for(int i=0;i>num;
            create(root,num);
        }
        /*char n[17];//     
        node *root=NULL;
        cin>>n;
        for(int i=0;i
        //flag=0;//             
        ///c=0;
        postorder(root);
        cout<