前序创建二叉树c++2

#include <iostream>
#include <string>
using namespace std;
string str1 = "ABDH#K###E##CFI###G#J##";
int index = 0;
template<class T>
class ThreadLinkNode
{
    public:
        T data;
        ThreadLinkNode<T> *lchild, *rchild;
        ThreadLinkNode();
        ThreadLinkNode(T e);
};
template<class T>
ThreadLinkNode<T>::ThreadLinkNode(T e)
{
    data = e;
    lchild = NULL;
    rchild = NULL;

}
template<class T>
ThreadLinkNode<T>::ThreadLinkNode()
{
    lchild = NULL;
    rchild = NULL;

}
//
template<class T>
class ThreadLinkTree
{
    private:
        ThreadLinkNode<T> *root;
        ThreadLinkNode<T>* CreatePreOrderLinkTree();
        void MidOrderLinkTree(ThreadLinkNode<T> *r);
    public:
        ThreadLinkTree();
        void MidOrderLinkTreeTest();

};

template<class T>
void ThreadLinkTree<T>::MidOrderLinkTreeTest()
{
    MidOrderLinkTree(root);
    cout << endl;
}
template<class T>
void ThreadLinkTree<T>::MidOrderLinkTree(ThreadLinkNode<T> *r)
{
    if(r == NULL)
        return;
    MidOrderLinkTree(r->lchild);
    cout << r->data << " ";
    MidOrderLinkTree(r->rchild);
}

template<class T>
ThreadLinkNode<T>* ThreadLinkTree<T>::CreatePreOrderLinkTree()
{
    ThreadLinkNode<T> *p = NULL;
    T ch;
    ch = str1[index++];
    if(ch == '#')
        return p;
    else
    {
        p = new ThreadLinkNode<T>;
        p->data = ch;
        p->lchild = CreatePreOrderLinkTree();
        p->rchild = CreatePreOrderLinkTree();
    }
    return p;				//此处返回p的原因为保证右子树完整,以字符串中的H值为例,当值K的右孩子判断完毕后
}							//如果不返回p则将使得H右孩子无值。
template<class T>
ThreadLinkTree<T>::ThreadLinkTree()
{
    root = CreatePreOrderLinkTree();	//用构造函数先序创建二叉树。
}

void test03()
{
    ThreadLinkTree<char> tree;
	cout << "中序遍历为:" << endl;
	tree.MidOrderLinkTreeTest();
}
int main()
{
	test03();
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值