数据结构之二叉树(JAVA实现)

本文介绍了二叉树的基本概念、性质、分类,包括满二叉树和完全二叉树,并详细讲解了二叉树的顺序存储和链式存储方式。此外,还探讨了二叉树的四种遍历方法——前序、中序、后序和层次遍历,提供了Java实现的递归和非递归方法。
摘要由CSDN通过智能技术生成

目录

1. 什么是二叉树

2. 二叉树的性质

3. 二叉树的分类:

3.1. 满二叉树:

3.2. 完全二叉树

4. 二叉树的存储方式

4.1 顺序存储

4.2 链式存储

5. 二叉树的遍历

5.1 前序遍历:

5.2 中序遍历:

5.3 后序遍历

5.4 层次遍历


1. 什么是二叉树

满足以下两个条件的树称之为二叉树:

1. 本质上为有序树;

2. 每个结点的度不能超过2,即结点的度仅能为0,1,2。

2. 二叉树的性质

性质1:二叉树第i层的结点数最多为2^(i-1) (i>=1)。

性质2:深度为k的二叉树最多有2^k - 1个结点。

性质3:在任意一颗二叉树中,若终端结点(叶子结点)的个数为n0,度为2的结点树为n2,则n0=n2+1。

证明:设二叉树中度为1的结点数为n1,结点总数为n,则n = n0 + n1 +n2。同时,度为2的子结点共有2*n2个,度为1的子结点共有n1个,总结点数=子结点数+根结点 故n = n2*2 + n1 +1。两等式联立得出n0 = n2 +1。

3. 二叉树的分类:

3.1. 满二叉树:

若二叉树中除了叶子结点,每一个节点的度都为2,则称此二叉树为满二叉树。

满二叉树具有以下性质:

1. 满二叉树的第i层结点数为2^(i-1);

2. 深度为k的满二叉树有2^k - 1个结点,叶子结点有2^(k-1)个;

3. 具有n个结点的满二叉树的深度为log2(n+1);

4. 满二叉树中不存在度为1的结点,叶子结点仅存在在最底层。

3.2. 完全二叉树

若二叉树除了最后一层结点满足满二叉树的定义,且最后一层节点满足从左到右分布的次序,则该二叉树被称为完全二叉树。

完全二叉树除了满足普通二叉树的性质外,还满足以下性质:

1.  n个结点的完全二叉树的深度为⌊log2n⌋+1;

2. 将完全二叉树按照层次从左到右编号,

(1)当i > 1时,序号为i的结点的父结点为结点[i / 2];

(2)若2*i > n, 则序号为i的结点无左子女结点,否则该节点的左子女结点序号为2*i;

(3)若2*i+1>n,则序号为i的结点无右子女结点,否则该结点的右子女结点的序号为2*i+1。

4. 二叉树的存储方式

二叉树的存储方式有两种,顺序存储和链式存储。

4.1 顺序存储

顺序存储只适用于完全二叉树,若想存储普通二叉树,需要先将其转化为完全二叉树。满二叉树也是一种特殊的完全二叉树。

普通二叉树转化成完全二叉树的方法如下

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值