数据结构~二叉树(基础知识)

上一篇博客我们对树有了初步了解与学习,这篇我将初步学习二叉树!!(新年快乐!)

目录

二叉树

1、定义:

2、特点:

3、基本形态:

4、二叉树的种类:

(1)满二叉树

[(2)完全二叉树 (效率高)](#(2)完全二叉树 (效率高))

(3)斜树

5、二叉树的性质:

6、二叉树的存储:


二叉树

1、定义:

二叉树是每个节点最多有两个子树的树结构。二叉树是n(n>=0)个结点的有限集合 ,该集合或者为空集(称为空二叉树 ),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

2、特点:

(1)每个结点最多有两棵子树(二叉树不存咋大于2的结点)。

(2)二叉树的子树有左右顺序之分,其子树的次序不能颠倒

(3)即使树中的某结点只有一棵子树,也要区分它是左子树还是右子树。

3、基本形态:

(1)空二叉树;

(2)只有一个根结点;

(3)根结点只有左子树;

(4)根结点只有右子树;

(5)根结点既有左子树又有右子树。

4、二叉树的种类:

(1)满二叉树

定义:一个二叉树每个层的结点数都达到了最大值。

【即如果一个二叉树的层数为n,则结点总数是(2^k)-1】

满二叉树是一种特殊的完全二叉树!!

特点:

a.叶子只能出现在最下一层。出现在其他层就不可能达到平衡。

b.非叶子结点的度一定为2。

c.在同样深度的二叉树中,满二叉树的结点个数最多,叶子树最多。

(2)完全二叉树 (效率高)

定义:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。

特点:

a.叶子结点只能出现在最下两层。

b.最下层的叶子一定集中在左部连续位置。

c.倒数第二层,如果有叶子结点,一定都在右部连续位置。

d.如果结点度为1,则该结点只有左孩子,即不存在只有右子树的情况。

e.同样结点数的二叉树,完全二叉树的深度最小。

(3)斜树

向哪边斜就叫啥斜树!!

左斜树:所有的结点都只有左子树的二叉树。

右斜树:所有的结点都只有右子树的二叉树。

5、二叉树的性质:

(1)

若规定根结点的层数为1 ,则一棵非空二叉树的第i层上最多有2^(i-1) (i>0)个结点。

(2)

若规定只有根结点的二叉树的深度为1 ,则深度为k的二叉树的最大结点数是2^k-1 (k>=1)。

(3)

对任何一棵二叉树,如果其叶结点个数为n0,度为2的非叶结点个数为n2,则有n0=n2+1

(4)

具有n个结点的完全二叉树的深度k为[ log2n]+1上取整。([x]表示不大于x的最大整数)

(5)

对于具有n个结点的完全二叉树,如果按照从上至下从左至右的顺序对所有结点从0开始编号,对于序号为i的结点有:

若i>0,双亲序号:(i-1)/2; i=0,i为根结点编号, 无双亲结点。

若2i+1<n,左孩子序号:2i+1,否则无左孩子。

若2i+2<n,右孩子序号:2i+2,否则无右孩子。

6、二叉树的存储:

二叉树的存储结构分为顺序存储 和类似于链表的链式存储

链式存储:

复制代码
//孩子表示法

class Node6 
{
    int val;     //数据域
    Node6 left;  //左孩子的引用,常常代表左孩子为根的整棵左子树
    Node6 right; //右孩子的引用,常常代表右孩子为根的整棵右子树
}

//孩子双亲表示法public class Node7 

{
    int val;      //数据域
    Node7 left;   //左孩子的引用,常常代表左孩子为根的整棵左子树
    Node7 right;  //右孩子的引用,常常代表右孩子为根的整棵右子树
    Node7 parent; //当前结点的根结点
}

今天的学习就到这了,下篇博客咱继续!!

相关推荐
玄斎14 分钟前
MySQL 单表操作通关指南:建库 / 建表 / 插入 / 增删改查
运维·服务器·数据库·学习·程序人生·mysql·oracle
晨晖243 分钟前
单链表逆转,c语言
c语言·数据结构·算法
im_AMBER2 小时前
Leetcode 78 识别数组中的最大异常值 | 镜像对之间最小绝对距离
笔记·学习·算法·leetcode
其美杰布-富贵-李3 小时前
HDF5文件学习笔记
数据结构·笔记·学习
d111111111d4 小时前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
明洞日记4 小时前
【数据结构手册008】STL容器完全参考指南
开发语言·数据结构·c++
kingmax542120084 小时前
《数据结构C语言:单向链表-链表基本操作(尾插法建表、插入)》15分钟试讲教案【模版】
c语言·数据结构·链表
AI科技星5 小时前
质量定义方程常数k = 4π m_p的来源、推导与意义
服务器·数据结构·人工智能·科技·算法·机器学习·生活
Fine姐5 小时前
数据结构04——二叉树搜索树BST
数据结构
嗷嗷哦润橘_5 小时前
AI Agent学习:MetaGPT之我的工作
人工智能·学习·flask