二叉树的实现

 

 

 

 

 

 

描述

要求:

1.采用二叉链表的方式进行存储

2.构造一个二叉树类

实现以下算法:

1.创建二叉树

2.对二叉树进行前序、中序、后序遍历

输入

扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树

输出

前序、中序、后序

 

代码:

#include<iostream>
using namespace std;
struct BiNode
{
    char data;
    BiNode *rchild;
    BiNode *lchild;
};
class BiTree
{
    public:
        BiTree(){root=create();}
        ~BiTree(){release(root);}
        void preorder(){preorder(root);} //前序遍历
	void inorder(){inorder(root);}//中序遍历
	void postorder(){postorder(root);}//后序遍历
    private:
        BiNode *root;
        BiNode *create();//方便调用root
        void release(BiNode *bt);
	void preorder(BiNode *bt);
	void inorder(BiNode *bt);
	void postorder(BiNode *bt);
};
BiNode *BiTree::create()
{

    BiNode *bt;
    char a;
    cin>>a;

    if(a=='#') bt=NULL;
    else
    {
        bt=new BiNode;
        bt->data=a;
        bt->lchild=create();
        bt->rchild=create();
    }
    return bt;
}
void BiTree::release(BiNode *bt)
{
    if(bt==NULL) return;
    else
    {
        release(bt->rchild);
        release(bt->lchild);
        delete bt;
    }
}

void BiTree::preorder(BiNode *bt)
{
    if(bt==NULL) return;
    else{
        cout<<bt->data;
        preorder(bt->lchild);
        preorder(bt->rchild);
    }
}

void BiTree::inorder(BiNode *bt)
{
    if(bt==NULL) return;
    else{
        inorder(bt->lchild);
        cout<<bt->data;
        inorder(bt->rchild);
    }
}

void BiTree::postorder(BiNode *bt)
{
    if(bt==NULL) return;
    else{
        postorder(bt->lchild);
        postorder(bt->rchild);
        cout<<bt->data;
    }
}
int main()
{
    string s;
    while(1)
    {
	BiTree t;
        cin>>s;
	t.preorder();
	cout<<endl;
        t.inorder();
        cout<<endl;
	t.postorder();
	cout<<endl;
	if(s=="N")
        break;

    }
	return 0;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值