• 数据结构——树的存储


    摘要:本文以二叉树树为例,描述树的两种存储方式——数组和链表,最后给出了二叉树的链式结构结点的详细实现。

    1. 数组

    1.1 普通树

    二叉树中各个节点的关系:

    结点编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    结点值 1 2 3 4 5 0 0 0 0 6 7 0 0 0 0

    1.2 完全二叉树


    1.3 优点与缺点

    优点:方式比较简单,对于完全二叉树来说更能够根据节点之间的关系,快速存取。

    缺点:对于非完全二叉树来说,会造成存储空间的大量浪费。


    2. 链表

    2.1 节点数据结构:

    node = left_child + data + right_child

    2.2 结点定义

    template <typename T>
    class CXTreeNode
    {
    protected:
        friend class CXBitTree<T>;
        
        CXTreeNode *m_lchild;
        CXTreeNode *m_rchild;
    public:
        T m_data;
    
        CXTreeNode(CXTreeNode *lchild=NULL, CXTreeNode *rchild=NULL)
            :m_rchild(rchild), m_lchild(lchild)
        {}
        CXTreeNode( const T& data, CXTreeNode *lchild=NULL, CXTreeNode *rchild=NULL )
        {
            m_data = data; 
            m_lchild = lchild;
            m_rchild = rchild;
        }
    
        CXTreeNode* &GetLeft() const
        {
            return m_lchild;
        }
    
        CXTreeNode* &GetRight() const
        {
            return m_rchild;
        }
    
    };


  • 相关阅读:
    Js实现页面跳转的几种方式
    android给View设置上下左右边框
    mac下安装tomcat
    Series.str方法
    loc() iloc() at() iat()函数
    sudo: pip:找不到命令
    杀死进程方法
    unique()与nunique()
    object数据类型
    set_index()与reset_index()函数
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3172404.html
Copyright © 2020-2023  润新知