完成數和節點存儲結構設計
- 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; }
以上內容整理於狄泰軟件學院系列課程,請你們保護原創!架構