完成数和节点存储结构设计
- GTree 为通用树结构,每一个节点能够存在多个后继节点
- GTreeNode 可以包含任意多个指向后继节点的指针
- 实现书结构的全部操做(增,删,查,等)
template <typename T> class GTreeNode : public TreeNode<T> { public: LinkList<GTreeNode<T>*> child; };
template <typename T> class GTree : public Tree<T> { // implementation };
文件:GTreeNode.hnode
#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) override { bool ret = true; return ret; } bool insert(const T &value, TreeNode<T> *parent) override { bool ret = true; return ret; } SharedPointer<Tree<T>> remove(const T &value) override { return nullptr; } SharedPointer<Tree<T>> remove(TreeNode<T> *node) override { return nullptr; } GTreeNode<T>* find(const T &value) const override { return nullptr; } GTreeNode<T>* find(TreeNode<T> *node) const override { return nullptr; } GTreeNode<T>* root() const override { return dynamic_cast<GTreeNode<T>*>(this->m_root); } int degree() const override { return 0; } int count() const override { return 0; } int height() const override { return 0; } void clear() override { this->m_root = nullptr; } ~GTree() { clear(); } }; } #endif // GTREE_H
每一个树节点中为何包含指向前驱节点的指针?数据结构
- 根节点 → 叶节点 : 非线性数据结构哦
- 叶节点 → 根节点 : 线性数据结构(链表)
思考:如何实现 GTree (通用树结构)的节点查找?
GTreeNode<T>* find(const T &value) const override { return nullptr; } GTreeNode<T>* find(TreeNode<T> *node) const override { return nullptr; }
以上内容整理于狄泰软件学院系列课程,请你们保护原创!架构