二叉树知识整理:分类、遍历(前序后序中序层次)

二叉树(Binary tree)是每个节点最多只有两个分支的树结构。分别为”左子树”和”右子树”。
常用的定义:
根节点:只有子节点,没有父节点。也就是只有往外的箭头。一棵树最多只有一个根节点。
叶节点:与根节点刚好相反,只有父节点,没有子节点。
左子树与右子树:以根节点“2”为例,它的左子树是“7”和“7”的所有分支(包括了7、2、6、5、11)。同理右子树。
树的深度:从根节点到叶节点最远的距离。下图的深度为3
这里写图片描述

二叉树的分类:

1 满二叉树

一棵深度为k的树最多具有 2k+11 2 k + 1 − 1 个节点。通俗一点的理解就是满足:1.叶节点的深度都为k。2.除了叶节点,所有的节点的度都为2.

2 完全二叉树

在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树(这句话来自维基百科,没太看懂。。)。我的理解是,这个二叉树是一层一层的填满,但有可能是填到最后一层,没有足够的节点了,所以从左边开始,填到哪算哪。这种就称为完全二叉树。
满二叉树 完全二叉树
数据结构中用的比较多的类型是二叉堆和搜索二叉树

3 二叉堆

二叉堆是一种特殊的堆。二叉堆满足堆特性:父节点的键值与任何一个子节点的键值保持固定的大小关系,且每个节点的左子树和右子树都是一个二叉堆。

当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆。 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆。如图分别为最小堆和最大堆。
这里写图片描述

4 二叉搜索树(BST)

二叉搜索树,也称为二叉查找树、有序二叉树或排序二叉树,是指一棵空树或者具有下列性质的二叉树:

1.若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;
2.若任意节点的右子树不为空,则右子树上所有节点的值均大于它的根节点的值;
3.任意节点的左、右子树也分别为二叉查找树;
4.没有键值相等的节点。
下图就是一颗二叉搜索树。
这里写图片描述

其中二叉堆和二叉搜索树在数据结构算法中比较常见,也非常重要。因为它们具有独特的性质。

5.平衡二叉搜索树(AVL)

要定义AVL,首先要明白节点的平衡因子。平衡因子=左子树的高度-右子树的高度。下图标注了每个节点的平衡因子。
这里写图片描述

平衡二叉树就是每个节点的平衡因子只能为0、1、-1这三种。下图就是一些平衡二叉树
这里写图片描述

二叉树遍历方式

在计算机科学里,树的遍历(也称为树的搜索)是图的遍历的一种,指的是按照某种规则,不重复地访问某种树的所有节点的过程。常用的有前序、中序、后序和层次遍历法

关于前序后序中序三种遍历方式,最关键的记住,所谓前后中都是以父节点为基础,并且同一个父节点的左节点永远在右节点的前面。
以N(node)、L(left)、R(right)分别表示父节点、左节点、右节点
前序:N-L-R
中序:L-N-R
后序:L-R-N

层次遍历:从根节点开始,一层一层的遍历,从左往右
这里写图片描述

对于上图而言
前序(NLR):A B D C E G H F I
中序(LNR):D B A G E H C F I
后序(LRN):D B G H E I F C A
层序:A B C D E F G H I

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值