树结构--二叉树

线性结构主要描述具有单一的前驱和后继的数据。树结构是一种比线性结构更加复杂的数据结构,比较合适描述具有层次的数据,比如祖先—后代、上级—下级、整体—部分的关系。树结构在计算机领域中有着广泛的应用:如java中的语法树,利用二叉树进行搜索、排序等等。下面笔者将对树进行简单的介绍。

树: 是n个节点的有限集合,有且仅有一个特定的根结点,当n>1是,除根结点之外的奇遇节点被分成多个互不相交的有限集合,其中每个集合又是一棵树,成为根结点的子树。     某结点子树的个数称为该结点的度。       度为0的节点称为叶子节点。    节点层数:规定根结点的层数为1,对于其余任何结点,若某结点在第k层,其孩子结点在k+1层。树的高度:树中所有节点的最大层数称为树的深度或高度。

如图: A 是根节结点度为2;  B 的度为3 ; D 为叶子结点,度为 0;  F 的层数为 3;  树的深度(高度)为4

树

树的遍历: 

前序遍历:(1)访问根节点     (2) 按照从左到有的顺序前序遍历根结点的每一棵子树。 上图的前序遍历为: A  B  D  E  I  F  C  G  H

后序遍历:(1)按照从左到有的顺序前序遍历根结点的每一棵子树   (2) 访问根结点。   上图的后序遍历为: D   I   E  F  B  G  H  C  A

层序遍历: 也称为广度遍历    从第一层开始,从上层到下层,每一层从左到右访问。上图的层序遍历为: A  B  C  D  E  F  G  H  I

对树有了简单的了解后,下面来了解下二叉树。

二叉树:是最简单的树结构,由一个根节点和两棵互不相交的左、右子树的二叉树租车。

特点: (1)每个结点最多有两棵子树,所以不存在度大于2的结点  (2) 二叉树是有序的,其次序不能颠倒,它的左子树不能反正根的由边。

满二叉树: 所有分支结点都存在左右子树,并且所有叶子结点都在同一层上。 满二叉树特点: 叶子只能出现在最下一层, 只有读为 0 和2 的结点

完全二叉树: 通俗的一句话讲: 就是在满二叉树上,最下层的右边开始去叶子结点。所以满二叉树必定是完全二叉树        

性质:  

(1)二叉树的第 i 层上最多有2的i-1 次方 个结点。上图满二叉树中: 第三层最多有5个节点 

(2)在一棵深度为k的二叉树中,最多有2的k次方 减1 个节点(满二叉树),最少有k个结点(一棵斜树)。

(3) 在一棵二叉树中,如果叶子结点的个数为n , 度为2的结点个数为m,则n = m + 1。 上图: 完全二叉树有

(4)具有n个节点的完全二叉树的深度为log  2 为底n 的对数 向下取整加1。

二叉树的遍历

前序遍历: (1)访问根节点   (2)前序遍历根节点的左子树  (3)前序遍历根节点的右子树 。 下图前序: A  B  D  G  C  E  F

序遍历:1)前序遍历根节点的左子树  (2)前序遍历根节点的右子树3)访问根节点     下图后序: G  D  B  E  F  C  A

  序遍历:1)前序遍历根节点的左子树  2)访问根节点   3)前序遍历根节点的右子树 下图中序: D  G  B  A  E  C  F  

遍历:   和树的遍历相同,从上到下,从左到右。  下图层序:  A  B  C  D  E    G

 


上面对树及二叉树的概念及相关特点性质等做了简单的介绍。接下来笔者将介绍二叉查找树、二叉排序树、平衡二叉树等做简单的介绍。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值