数据结构之二叉树

本文详细介绍了二叉树的基础概念,包括节点的度、叶节点、层次和高度。讨论了满二叉树、完全二叉树和二叉搜索树的特性,并阐述了二叉树的遍历方法:前序、中序、后序和层序。此外,还解释了二叉树中节点的父子关系和最大节点数的计算,以及如何寻找叶节点和计算树的高度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础概念:

节点的度:一个节点含有的子树的个数

叶节点或终端节点:度为零的节点; 

节点的层次:从根开始定义起,根为第1层,根的子节点为第2层 

树的高度或深度:树中节点的最大层次;

树的类型:

1、满二叉树:一棵深度为k,且有2^k-1 (2的k次方减一)个节点称之为满二叉树 (也称完美二叉树,就是节点全有,只有度为2和0的节点)

2、完全二叉树: 如上图描述,一一对应,但是可以有缺漏(去除满二叉树黄色部分,可以少右子节点,不能少左子节点)

3、二叉搜索树: 非空左子树的所有键值小于其根节点的键值,非空右子树的所有键值大于其根节点的键值,左右子树都是二叉搜索树

      搜索:  最小值 直接遍历到最左边的叶节点就行,最大值同理 

      插入      利用搜索算法用节点对比要插入的值,遍历找到要插入的位置插入即可  

        删除   :

层的最大节点和树的最大节点数:

1 、每一层最大节点数为 2的层-1次方   比如(根节点为1  那根节点最大的节点数为 2^(1-1) = 1   第二层则为 2^(2-1) = 2)

2、深度为k的二叉树最大节点总数为2的k次方-1(1+2^1+2^2+2^(k-1) = 2^k -1 ,  "2的k次方-1") 等比数列求和

任何非空二叉树,若N0表示叶节点个数,n2是度为2的非叶节点个数,那么两者满足关系 n0 = n2+1,解析如下:

  n0+n1+n2-1 = 0*n0 + 1*n1+2*n2               ≈      n0+n2-1 = 2*n2       ≈         n0-1 = n2           ≈               n0 = n2+1

(各个节点的边,连接每个节点的边只有一条,根节点没有,所以-1) = (节点延伸出来的边数 n0 0个边 ,n1 1个边,n2 2个边)

 

节点的父子关系:

节点序号为i

非根节点的父节点的序号是[i / 2 ]

节点的左孩子节点的序号为 2i,右孩子节点的序号为2i+1

 

二叉树的遍历方式,如下: 


(1)前序遍历,首先访问根结点,然后遍历左子树,最后遍历右子树。简记根-左-右。 
(2)中序遍历,首先遍历左子树,然后访问根结点,最后遍历右子树。简记左-根-右。 
(3)后序遍历,首先遍历左子树,然后遍历右子树,最后访问根结点。简记左-右-根。
  (4)   层序遍历    利用队列    首先读取当前节点数据,然后判断是否有左右子树,有则加到队列中。循环。

 

例子思想:

找所有叶节点: 在遍历算法中检测 左右子节点是否都为空

求树的高度:  递归 求左子树和右子树的深度,进行对比,取较大的深度,返回给上一层进行保存
 

参考:http://www.icourse163.org/course/ZJU-93001

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值