树与二叉树

系列知识

二叉树的概念

​​​​​​二叉树的基本操作

二叉树的遍历与再建

树的概念

想想现实中的树,营养从树根出发,通过茎杆与树枝层层分岔、不断传递,最终到达树叶的。在数据结构中,树是用来概括这种传递关系的数据结构。为了简化,我们把树枝分岔处、树叶、树根都抽象成结点(node),树根为根结点(root),且对于一棵树来说最多存在一个根结点;把树叶概括为叶子结点(leaf),且叶子结点不再延伸出新的结点;把茎杆和树枝抽象成边(edge),且一条边只用来连接两个结点(一个端点一个)。这样,树就被定义成由若干个结点和若干个边组成的数据结构,且在树中的结点不能被边连接成环。在数据结构中,一般把根结点置于最上方(与现实中的树恰好相反),然后向下延伸出若干条边到达子结点(child)(从而向下形成子树(subtree)),然后以此类推,直至到达叶子结点。

下面是一些关于树比较实用的性质:

  • 树可以没有结点,即空树(empty tree)
  • 树的层次(layer)从根结点开始算起,即根结点为第一层,往下为第二层,以此类推;
  • 把结点的子树棵树称为结点的度(degree),而树中结点最大的度被称为树的度(也称为树的宽度);
  • 由于一条边连接两个结点,且树中不存在环,因此对有n个结点的树,边数一定是n-1.且满足连通、边数等于n-1的结构一定是一棵树。
  • 叶子结点被定义成度为0的结点,因此当树中只有一个结点(即只有根结点)时,根结点也算作叶子结点。
  • 结点的深度(depth)是指从根结点(深度为1)开始自顶向下逐层累加至该结点时的深度值;结点的高度(height)是指从最底层叶子结点(高度为1)开始自底向上逐层累加至该结点的高度值。树的深度是指树中结点的最大深度,树的高度是指树中结点的最大高度,对整棵树而言,深度与高度是相等的。
  • 多棵树组合在一起称为森林(forest),即森林是树的集合。

二叉树的递归定义

二叉树的递归定义

  1. 要么二叉树没有根结点,是一棵空树;
  2. 要么二叉树由根结点、左子树、右子树组成,且左右子树都是二叉树。

二叉树与度为2的树的区别

对树来说,结点的子树是不区分左右顺序的,因此度为2的树只能说明树中每个结点的子结点个数不超过2。二叉树虽然也满足这一点,但它的左右子树是严格区分的,不能随意交换左右子树的位置,这是最主要的区别。

特殊二叉树

满二叉树:每一层的结点个数都达到了当层能达到的最大结点数;

完全二叉树:除了最下面一层之外,其余层的结点个数都达到了当层能达到的最大结点数,且最下面一层只从左至右连续存在若干结点,而这些连续结点右边的结点全部不存在。

写在最后

从二叉树的角度来理解一下几个树的概念:

1. 层次:如果把二叉树看做家谱,层次就是辈分。如上图的满二叉树,1是爷爷,则2和3就是同一辈分的父亲与伯父,依次类推;

2. 孩子结点、父亲结点、兄弟结点、祖先结点、子孙结点:

  • 一个结点的子树的根结点是它的孩子结点,它是它的孩子结点的父亲结点;
  • “辈分”比自己高的是祖先结点,“辈分”比自己低的是子孙结点;
  • 和自己“辈分”相同的是兄弟结点;
  • 自己既是自己的祖先结点,也是自己的子孙结点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AryCra_07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值