栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

前序创建二叉树c++2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前序创建二叉树c++2

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

}
template
ThreadlinkNode::ThreadlinkNode()
{
    lchild = NULL;
    rchild = NULL;

}
//
template
class ThreadlinkTree
{
    private:
        ThreadlinkNode *root;
        ThreadlinkNode* CreatePreOrderlinkTree();
        void MidOrderlinkTree(ThreadlinkNode *r);
    public:
        ThreadlinkTree();
        void MidOrderlinkTreeTest();

};

template
void ThreadlinkTree::MidOrderlinkTreeTest()
{
    MidOrderlinkTree(root);
    cout << endl;
}
template
void ThreadlinkTree::MidOrderlinkTree(ThreadlinkNode *r)
{
    if(r == NULL)
        return;
    MidOrderlinkTree(r->lchild);
    cout << r->data << " ";
    MidOrderlinkTree(r->rchild);
}

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

void test03()
{
    ThreadlinkTree tree;
	cout << "中序遍历为:" << endl;
	tree.MidOrderlinkTreeTest();
}
int main()
{
	test03();
	system("pause");
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号