zoukankan      html  css  js  c++  java
  • 树——通用树的存储结构与结点实现

    1,上篇博文介绍了树的定义和相关概念定义,本节课创建树对象和树结点对象;

    2,课程目标:

     

           1,完成树和结点的存储结构设计:

                  1,没有树结点,就没有树,同生死;

                        

    3,设计要点:

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

           2,GTreeNode 能够包含任意多指向后继结点的指针;

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

                  1,抽象类只用包含功能函数,具体的对象才包含成员变量和实现功能函数;

                 

    4,GTreeNode 的设计与实现:

     

           1,组合单链表类,因为要包含任意多指向结点的指针:

                  

                

    5,GTree 的设计与实现:

     

           1,继承抽象树及组合使用通用结点:

                 

          

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

     

           1,后继表示方式是指针,指针通过单链表组织;

           2,包含指向父结点的指针;

    7,通用树结点的创建:

      1,通用树结点 GTreeNode 的创建:

     1 #ifndef GTREENODE_H
     2 #define GTREENODE_H
     3 
     4 #include "TreeNode.h"
     5 #include "LinkList.h"
     6 
     7 namespace DTLib
     8 {
     9 
    10 template < typename T >
    11 class GTreeNode : public TreeNode<T>
    12 {
    13 public:
    14    LinkList<GTreeNode<T>*> child;
    15 
    16     static GTreeNode<T>* NewNode() // 工厂模式
    17     {
    18         GTreeNode<T>* ret = new GTreeNode<T>();
    19         if( ret != NULL )  // 申请堆空间成功
    20         {
    21             ret->m_flag = true;
    22         }
    23 
    24         return ret;
    25     }
    26 };
    27 
    28 }
    29 
    30 #endif // GTREENODE_H

         2,通用树 GTree 的创建:

        1,见后续通用树相关博文;

    9,每个树结点中为什么包含指向前驱结点的指针?

     

           1,根结点 ==> 叶结点:非线性数据结构;

           2,叶结点 ==> 根结点:线性数据结构(链表);

                  1,每个结点通过 parent 指针都能找到唯一的父结点,于是每个叶结点都能够通过 parent 指针找到唯一的根结点,这是线性的链表结构;

                  2,可以用树相关的知识,也可以用链表相关的知识处理树的问题;

  • 相关阅读:
    别闹了,这些都不是数字化转型
    对不起,“下一代ERP”仍旧是现在的ERP
    这世界真小
    SAP S4HANA 2020 Fully-Activated Appliance 虚拟机版分享
    花费巨资参加SAP培训真的有用吗?
    剑指 Offer 07. 重建二叉树
    剑指 Offer 06. 从尾到头打印链表
    剑指 Offer 05. 替换空格
    剑指 Offer 04.二维数组中的查找
    剑指 Offer 03. 数组中重复的数字
  • 原文地址:https://www.cnblogs.com/dishengAndziyu/p/10924424.html
Copyright © 2011-2022 走看看