代码完善数据结构二叉树

建立一棵二叉树,树的形态自定,完成以下操作:
(1)输出该二叉树的前序遍历序列;
(2)输出该二叉树的中序遍历序列;
(3)输出该二叉树的后序遍历序列。

代码完善

#include<iostream>
using namespace std;

struct BTree
{
    char data;
    BTree *lchild, *rchild;
};

class Tree
{
public:
    Tree() { root = Create(root); }
    ~Tree() { relase(root); }
    void preorder() { preorder(root); }
    void inorder() { inorder(root); }
    void postorder() { postorder(root); }
private:
    BTree *root;
    BTree *Create(BTree *t);
    void relase(BTree *t) ;
    void preorder(BTree *t);
    void inorder(BTree *t);
    void postorder(BTree *t);
};

BTree *Tree::Create(BTree *t)
{
    char ch;
    cin >> ch;//输入结点
    if (ch == '#')
    {
        t = NULL;
    }
    else
    {
        t = new BTree;
        t->data = ch;
        t->lchild = Create(t->lchild);
        t->rchild = Create(t->rchild);
    }
    return t;
}

void Tree::preorder(BTree *t)
{
    if (t == NULL)
    {
        return;
    }
    else
    {
        cout << t->data;
        preorder(t->lchild);
        preorder(t->rchild);
    }
}

int main()
{
    cout << "请输入二叉树的结点数据:";
    Tree A;
    cout << "前序遍历为:" << endl;
    A.preorder();
    cout << "中序遍历为:" << endl;
    A.inorder();
    cout << "后序遍历为:" << endl;
    A.postorder();
    return 0;
}
#include<iostream>
using namespace std;

struct BTree
{
    char data;
    BTree *lchild, *rchild;
};

class Tree
{
public:
    Tree() { root = Create(root); }
    ~Tree() { relase(root); }
    void preorder() { preorder(root); }
    void inorder() { inorder(root); }
    void postorder() { postorder(root); }
private:
    BTree *root;
    BTree *Create(BTree *t);
    void relase(BTree *t) ;
    void preorder(BTree *t);
    void inorder(BTree *t);
    void postorder(BTree *t);
};

BTree *Tree::Create(BTree *t)
{
    char ch;
    cin >> ch;//输入结点
    if (ch == '#')
    {
        t = NULL;
    }
    else
    {
        t = new BTree;
        t->data = ch;
        t->lchild = Create(t->lchild);
        t->rchild = Create(t->rchild);
    }
    return t;
}

void Tree::preorder(BTree *t)
{
    if (t == NULL)
    {
        return;
    }
    else
    {
        cout << t->data;
        preorder(t->lchild);
        preorder(t->rchild);
    }
}
void Tree::inorder(BTree *t)
{
    if (t == NULL)
    {
        return;
    }
    else
    {
        inorder(t->lchild);
        cout << t->data;
        inorder(t->rchild);
    }
}
void Tree::postorder(BTree *t)
{
    if (t == NULL)
    {
        return;
    }
    else
    {
        postorder(t->lchild);
        postorder(t->rchild);
        cout << t->data;
    }
}

void Tree::relase(BTree *t)
{
    if (t == NULL)
    {
        return;
    }
    else
    {
        relase(t->lchild);
        relase(t->rchild);
        delete t;
    }
}

int main()
{
    cout << "请输入二叉树的结点数据:";
    Tree A;
    cout << "前序遍历为:" << endl;
    A.preorder();
    cout << endl;

    cout << "中序遍历为:" << endl;
    A.inorder();
    cout << endl;

    cout << "后序遍历为:" << endl;
    A.postorder();
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632