数据结构与算法-树

本文深入探讨了树这一数据结构的基本概念,包括空树、非空树、结点的度与树的度、结点的层次与树的深度、父亲、儿子、兄弟等关系,以及有序树、m叉树、森林的概念,为理解复杂的数据结构提供了清晰的视角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本概念

树(tree)是n(n>=0)个结点的有限集合它:

       

  • 或者是一棵空树(n=0),空树中不包含任何结点。
  • 或者是一颗非空树,此时有且仅有一个特定的称为根(root)的节点。
  • 当 n>1 时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...、Tm,其中每一个本身又是一棵树,并且称为根的子树(sub tree)。
  • 如图:a是一颗空树,b是只有一个根结点的树,c是一颗有10个结点的树,其中A是根结点,其余的结点分成3个不相交的结合:T1={B,E,F}、T2={C,G}、T3={D,H,I,J},每个结合都是一棵树,且都是根的子树。
  • 生活案例:树、单位组织架构、族谱、文件系统

 结点的度和树的度

  • 结点拥有的子树的数目称为结点的度(Degree)。
  • 度为0的结点称为叶子(leaf)或终端结点。
  • 度不为0的结点称为非终端结点或分支结点,除根结点之外的分支结点也称为内部结点。
  • 树内各结点的度的最大值称为树的度。

         

结点的层次和树的深度

  • 结点的层次(level)从根开始定义,层次数为1的结点是根结点,其子树的根的层次为2。
  • 树种结点的最大层次数称为树的深度(Depth)或高度

         

父亲、儿子、兄弟

  • 父亲(parent):一个结点的直接前驱结点。
  • 儿子(child):一个结点的直接后继结点。
  • 兄弟(sibling):同一个父亲结点的其它结点。
  • 结点A是结点B、C、D的父亲,结点B、C、D是结点A的孩子,由于结点H、I、J有同一个父节点D,因此他们互为兄弟。

祖先、子孙、堂兄弟

  • 将父子关系进行扩展就可以得到祖先、子孙、堂兄弟等关系。
  • 祖先:从根结点到该结点路劲上的所有节点。
  • 子孙:以某结点为根的树中的任一结点。
  • 堂兄弟:父亲在同一层次的节点。

有序树、m叉树、森林

  • 有序树:树中结点的各子树看成从左至右是有次序的。
  • 无序树:不考虑子树的顺序。
  • 对于有序树,我们可以明确的定义每个结点的第一个孩子、第二个孩子等、直到最后一个孩子。
  • 若不特别指明,一般讨论的树都是有序树

         

  • 树中所有结点最大度数为m的有序树称为m叉树。
  • 森林(forest)是m(m>=0)棵互不相交的树的集合,对树中每个结点而言,其子树的集合即为森林。
  • 树和森林的的概念相近。删去一棵树的根就得到一个森林;反之加上一个结点作为根,森林就变为一棵树。

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值