二叉树的创建、遍历、广义表转换

本文介绍了树的基本概念、二叉树的定义、特点及分类,强调了完全二叉树的概念,并探讨了二叉排序树的性质。还讨论了如何用广义表表示二叉树以及广义表转二叉树的方法。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

1树的定义及相关术语

1.1 树的定义

  • 树是一种非线性的数据结构,由n(n>=0)个结点组成的有限集合;
    • 如果n=0,称为空树;
    • 如果n>0,则:
      • 有一个特定的结点被称之为根结点(root),根结点只有直接后继,没有前驱;
      • 除根结点外的其他结点划分为m(m>=0)个互不相交的有限集合T0,T1…Tm-1,每一个集合又是一颗子树,并称之为根的子树。

1.2 树的特点

  • 每个结点有零个或多个子结点;
  • 没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树;
  • 节点的数量等于边数加一;树由n 个节点 和 (n-1)条边 构成,其中n ≥ 1;
  • 树或栈这种数据结构用于解决** 具有完全包含关系的问题**;
  • 问题抽象(思维逻辑):本质上是把一个大问题分成若干个小问题,当小问题解决了,大问题自然也解决了;首先,将树中的“节点”看作“集合”,“边”看作“关系”,接着把“全集”看成是一个大问题,而“子集”看作是若干个小问题,我们只需要关注小问题的求解即可。

1.3 树的相关术语

  • 节点深度:对任意节点x,x节点的深度表示为根节点到x节点的路径长度。所以根节点深度为0,第二层节点深度为1,以此类推;
  • 节点高度:对任意节点x,叶子节点到x节点的路径长度就是节点x的高度;
  • 树的深度(高度):一棵树中节点的最大深度就是树的深度,也称为树的高度;
  • 度:节点的子树数目就是节点的度;
  • 叶子节点 vs 分支节点:度为零的节点就是叶子节点(路径中的最后一个节点);度不为零的节点就是分支节点;
  • 父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
  • 子节点:一个节点含有的子树的根节点称为该节点的子节点;
  • 兄弟节点:拥有共同父节点的节点互称为兄弟节点;
  • 节点的层次:从根节点开始,根节点为第一层,根的子节点为第二层,以此类推;
  • 祖先:对任意节点x,从根节点到节点x的所有节点都是x的祖先(节点x也是自己的祖先)
  • 后代:对任意节点x,从节点x到叶子节点的所有节点都是x的后代(节点x也是自己的后代)
  • 森林:m颗互不相交的树构成的集合就是森林
  • n叉树:由一个节点向外最多引出节点的数量,即当前这个节点最多向外有n个指向;
  • 补充:度分为“入度”和“出度”;
    • 出度:由一个节点向外指向边的数量;
    • 入度:有多少条边指向一个节点的数量;树的入度为1,所以只考虑出度,即为度;
  • 案例:
    • 树的深度(高度):4,path = 1→4→6→8
    • 节点4的深度:2,path = 1→4;节点4的高度:3,path = 8→6→4
    • 节点2的度:1, =(5, );节点4的度:2,=(6, 7);叶子节点的度:0

2 二叉树

2.1 定义

  • 在一个树中,由一个节点向外最多引出2个节点,即当前这个节点最多向外有2个指向;

2.2 n叉树 vs 二叉树

如何定义n叉树,n是多少的问题?

  • 对于n叉树中的n是一个不确定性的问题,一般计算机只能处理确定性问题,所以,我们可以将n 叉树转换为2叉树来思考;
  • 由于计算机底层是基于二进制计算的,故2 叉树 与 n叉树之间可以相互转换;
  • <
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值