• 【数据结构】--初始树型结构 二叉树的基本操作模拟实现


    了解树结构

    在了解树结构之前,想必应该对链式结构和数组有了一定的了解,树的结构是也是一种特定的元素序列的集合,定义:树是非线性结构,它是由n(n>=0)个有限结点组成的集合,当n等于0时,称之为空树,在任意非空树中:

    • 有且只有一个特定的称之为根(root)的结点
    • 其余结点可以分为m个互不相交的有限集合
    • 这些有限集合可以看作是新的树,并且称为根的子树

    树结构的基本名称

    结点的度:一个结点含有子树的个数称为该结点的度;
    树的度:一棵树中,所有结点度的最大值称为树的度;
    叶子结点或终端结点:度为0的结点称为叶结点;
    双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点;
    孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点;
    根结点:一棵树中,没有双亲结点的结点;其中一棵不为空树的树,根结点是唯一的,不存在有很多根节点
    树的高度或深度:树中结点的最大层次;
    非终端结点或分支结点:度不为0的结点;
    兄弟结点:具有相同父结点的结点互称为兄弟结点;
    堂兄弟结点:双亲在同一层的结点互为堂兄弟;
    结点的祖先:从根到该结点所经分支上的所有结点;
    子孙:以某结点为根的子树中任一结点都称为该结点的子孙。
    森林:由m(m>=0)棵互不相交的树组成的集合称为森林

    树的储存形式

    树在内存中的储存形式有很多种,包括孩子表示法、双亲表示法、孩子双亲表示法、孩子兄弟表示法等等,不用的储存方式有着不同的优点,就比如双亲表示法,其子节点内存有双亲结点的地址,能够在时间复杂度为O(1)的情况下,访问到双亲结点,但是想要知道孩子结点,必须要访问整个结点。但是各种表示法都有一定缺点,接下来重点讲孩子兄弟表示法,这种方法给找某个结点的孩子带来了方便
    但是如果想要想到这个结点的双亲结点,显然也是比较麻烦的,如果实在有必要,可以增加一个parent指针域来解决这个问题<

  • 相关阅读:
    rust模式
    CloudCompare 二次开发(15)——点云添加高斯噪声
    理解 MySQL join 语句的执行过程
    超市促销叫卖的语音是怎么做的?介绍简单小方法,方便又快捷
    SpringBoot-属性绑定和bean属性校验
    主动成为行业发展的一份子,正在成为一种潮流和趋势
    【汇编语言王爽】进阶-笔记 p22--p40
    ARM 汇编比较指令-条件执行指令
    关于pwn题的栈平衡中ret的作用
    OpenJDK16 ZGC 源码分析
  • 原文地址:https://blog.csdn.net/m0_64332179/article/details/126444016