• DS二叉树--二叉树构建与遍历


    题目描述

    给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果

    输入

    第一行输入一个整数t,表示有t个二叉树

    第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行

    输出

    输出每个二叉树的先序遍历、中序遍历和后序遍历结果

    样例输入

    2
    AB0C00D00
    AB00C00

    样例输出

    ABCD
    BCAD
    CBDA
    ABC
    BAC
    BCA
     
    采用递归建树的方法,先序遍历、中序遍历、后序遍历的原理一样,这里只实现先序
    #include<iostream>
    #include<string>
    using namespace std;
    class BitreeNode 
    {
    public:
        char data;
        BitreeNode *left;
        BitreeNode *right;
        BitreeNode():left(NULL),right(NULL){}
        ~BitreeNode(){}
    };
    class Bitree
    {
    private:
        BitreeNode *Root;
        int pos;
        string strtree;
        BitreeNode *CreateBitree();
        void PreOrder(BitreeNode *t);
        void InOrder(BitreeNode *t);
        void PostOrder(BitreeNode *t);
    public:
        Bitree() {};
        ~Bitree() {};
        void CreateTree(string TreeArray);
        void PreOrder();
        void InOrder();
        void PostOrder();
    };
    void Bitree::CreateTree(string treearray)
    {
        pos = 0;
        strtree.assign(treearray);
        Root = CreateBitree();
    }
    BitreeNode *Bitree::CreateBitree()
    {
        BitreeNode *T;
        char ch;
        ch = strtree[pos++];
        if (ch == '0')
            T = NULL;
        else
        {
            T = new BitreeNode();
            T->data = ch;
            T->left = CreateBitree();
            T->right = CreateBitree();
        }
        return T;
    }
    void Bitree::PreOrder()
    {
        PreOrder(Root);
    }
    void Bitree::PreOrder(BitreeNode *t)
    {
        if (t)
        {
            cout << t->data;
            PreOrder(t->left);
            PreOrder(t->right);
        }
    }
    
    int main()
    {
        int t;
        cin >> t;
        while (t--)
        {
            string str;
            cin >> str;
            Bitree *tree;
            tree = new Bitree();
            tree->CreateTree(str);
            tree->PreOrder();
            cout << endl;
        }
    }
  • 相关阅读:
    SQL SERVER开窗函数
    SQL SERVER调优常用方法
    SQL SERVER其它函数
    SQL SERVER时间函数
    SQL SERVER字符串函数
    ptyhon技能树及其学习资源
    机器学习中的数学基础
    python-spider 第10题
    python-spider 第七关
    python-spider 第六关
  • 原文地址:https://www.cnblogs.com/Liu269393/p/10217196.html
Copyright © 2020-2023  润新知