第52课 - 树的存储结构与实现

1、课程目标 

            完成结点的存储结构设计 

        


        设计要点 

                - GTree为通用树结构,每个结点可以存在多个后继结点 

                - GTreeNode能够包含任意多指向后维结点的指针 

                -实现树结构的 所有操作(增,删,查,等)


        GTreeNode的设计与实现 

            

        


        GTree的设计与实现 

                     

            


        GTree (通用树结构)的实现架构

                


2、编程实验 

通用树结构的创建     GTree.h

GTreeNode.h

#ifndef GTREENODE_H
#define GTREENODE_H

#include "TreeNode.h"
#include "LinkList.h"

namespace DTLib
{

template < typename T >
class GTreeNode : public TreeNode<T>
{
public:
    LinkList< GTreeNode<T>* > child;

};
}
#endif // GTREENODE_H

GTree.h

#ifndef GTREE_H
#define GTREE_H

#include "Tree.h"
#include"GTreeNode.h"

namespace DTLib
{
template < typename T >
class GTree : public Tree<T>
{
public:
    bool insert(TreeNode<T>* node)
    {
        bool ret = true;        //这里先写框架,后续课程完善

        return ret;
    }

    bool insert(const T& value,TreeNode<T>* parent)
    {
        bool ret = true;

        return ret;
    }

    SharedPointer< Tree<T> > remove(const T& value)
    {

        return NULL;
    }

    SharedPointer< Tree<T> > remove(TreeNode<T>* node)
    {

        return NULL;
    }

    GTreeNode<T>* find(const T& value) const    //GTreeNode  赋值兼容原则
    {
        return NULL;
    }
    GTreeNode<T>* find(TreeNode<T>* node) const
    {
        return NULL;
    }
    GTreeNode<T>* root() const
    {
        return dynamic_cast< GTreeNode<T>* >(this->m_root);
    }
    int degree() const
    {
        return 0;
    }
    int count() const
    {
        return 0;
    }
    int height() const
    {
        return 0;
    }
    void clear()
    {
        this->m_root = NULL;
    }

    ~GTree()
    {
        clear();
    }
};

}
#endif // GTREE_H

main.cpp

#include <iostream>
#include"GTree.h"

using namespace std;
using namespace DTLib;


int main()
{
    GTree<int> t;
    GTreeNode<int> tn;

    return 0;
}

                        


!!!由于之前在

class GTreeNode : public TreeNode<T>

在这里忘记public导致下面情况o((⊙﹏⊙))o.简直怀疑人生


根据错误信息可以推测可能是GTreeNode继承TreeNode出问题了,

扫了一眼继承了下意识忽略了public   (;´д`)ゞ


3、问题 

                每个树结点中为什么包含指向前驱

                结点的指针? 



            根结点  -->  叶结点:非线性数据结构 

            叶结点  -->  根节点:线性数据结构(链表)

    


4、实战预告 

            思考: 

                    如何实现GTree (通用树结构)的结点查找操作?

                    

猜你喜欢

转载自blog.csdn.net/qq_39654127/article/details/80456885
今日推荐