二叉树与二叉树遍历

树的介绍

​ 你可能回文树和图有什么区别?这个称之为树的东西和无向图差不多嘛。树其实就是不包含回路的连通无向图。
在这里插入图片描述

​ 图画的不好啊,把箭头忽略一下将就看一下,上面这个图左边就是一棵树,而右边就是一个图。因为左边没有类似右边存在的1->2->5->3->1这样的回路。

​ 正式因为树有不包含回路这个特点,所以被赋予了很多的特性:

  1. 一棵树的任一两个结点有且只有唯一一条路径连通
  2. 一棵树有n个结点,那么它一定恰好有n-1条边
  3. 在一棵树中加一条边将会构成一个回路

树这个特殊的数据结构会在哪里用到呢?比如足球世界杯的晋级图,家族的图谱,公司的组织结构图,节的目录,我们的操作系统Windows、Linux或者Mac中的目录都是一棵树。

​ 这里还有一些对于树的一些定义。首先,树是指任意两个结点间有且只有一条路径的无向图。或者说,只要是没有回路的连通无向图就是树。

​ 可能不难发现树其实有很多种形态。为了确定一棵树的形态,在树中可以指定一个特殊的结点——根。我们对一棵树进行讨论的时候,将树的每个点都称为结点,有的也会称为结点。有一个根的树叫做有根树。比如上面图中的树的根结点是1号结点。

​ 根又叫做根结点,一棵树有且只有一个根结点。根结点有时候也可以称为祖先,既然有祖先,那么理所当然也就有了父亲和儿子。比如上面的树,1号结点是2号和3号结点的父亲,4号和5号结点是2号结点的儿子,6号结点和7号结点是3号结点的儿子。

​ 父亲结点简称为父结点,儿子结点又称为子结点。上面的树中2号结点又是父节点也是子节点。另外,如果一个节点没有子结点,那么这个结点就称为叶结点,4, 5, 6, 7号结点都是叶结点。没有父结点的结点称为根结点,比如1号结点。如果一个结点既不是根结点也不是叶结点,则称为内部结点。最后,每个节点都还有深度。比如4号结点的深度是3。深度是指根结点到这个节点的层数(根结点为第一层)。

二叉树

​ 二叉树是一种特殊的树。二叉树的特点是每个节点最多有两个儿子,左边的叫左儿子,右边的叫右儿子,或者说每个节点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么为根节点、左子树和右子树构成,而左子树和右子树分别是一颗二叉树。

​ 二叉树的使用范围最广是,一棵多叉树也可以转换为二叉树,因此需要多二叉树多理解。

​ 二叉树中又有两种特殊的二叉树,叫做满二叉树和完全二叉树。如果二叉树每个内部节点都有两个儿子,这样的二叉树叫做满二叉树。或者说满二叉树所有的叶结点都有同样的深度。或者说所有的叶结点都有同样的深度。满二叉树的严格定义是一颗深度为h有2h-1个结点的二叉树。

​ 如果一颗二叉树处理最右边位置上有一个或几个结点缺少外,其他都是丰满的,那么这样的二叉树就是完全二叉树。严格的定义是:若设二叉树的高度为h,出第h层外,其他各层的结点数都达到最大。也就是说如果一个结点有有右子结点,那么它一定存在左子结点。其实你可以理解满二叉树成一个特殊的或者及其完美的完全二叉树。
在这里插入图片描述

​ 通过上图我们可以发现,如果二叉树的一个父结点的编号为k,那么它的左儿子编号就是2 * k,它的右儿子就是2 * k + 1。如果一个完全二叉树有N个结点,那么这个完全二叉树的高度为log2N + 1。

二叉树的遍历

先序遍历

遍历结果为:A B D H I E J C F K G
在这里插入图片描述
在这里插入图片描述

中序遍历

中遍历结果为:H D I B E J A F K C G
在这里插入图片描述
在这里插入图片描述

后续遍历

​ 后序遍历结果:H I D J E B K F G C A
在这里插入图片描述
在这里插入图片描述

层次遍历

层次遍历就是从上到下,从左到右,这就很好理解了。
在这里插入图片描述

遍历口诀

先序遍历:先根,再左,再右
中序遍历:先左,再根,再右
后续遍历:先左,再右,再根
这个里面的根不是开始的最上面的根节点,而是指每个分叉子树的根节点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值