【数据结构入门指南】二叉树

简介: 【数据结构入门指南】二叉树

一、二叉树的概念

二叉树是一棵特殊的。一棵二叉树是结点的一个有限集合,该节点:

①:或者为空。

②: 由一个根节点加上两棵别称为左子树和右子树的二叉树组成。



从上图可以看出:

  1. 二叉树不存在度大于2的结点.
  2. 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树。

Tips:对于任意的二叉树都是由以下几种情况复合而成的


二、现实中的二叉树


三、特殊的二叉树

满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^k -1,则它就是满二叉树。

 

完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。


四、二叉树的性质

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

②: 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2h-1。

③: 对任何一棵二叉树, 如果度为0其叶结点个数为n0 , 度为2的分支结点个数为n2,则n0 = n2 +1。

④: 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=log2(n+1)。

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

  1. 若i>0,i位置节点的双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点。
  2. 若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子。
  3. 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子。

五、二叉树的存储结构

二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。

5.1 顺序结构

顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费,/font.。而现实中使用中只有才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树


5.2 链式结构

二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系

通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分为二叉链和三叉链,到后期学到高阶数据结构如红黑树等会用到三叉链。

typedef int BTDataType;
// 二叉链
struct BinaryTreeNode
{struct BinTreeNode* _pLeft; // 指向当前节点左孩子
 struct BinTreeNode* _pRight; // 指向当前节点右孩子
 BTDataType _data; // 当前节点值域
}
// 三叉链
struct BinaryTreeNode
{
 struct BinTreeNode* _pParent; // 指向当前节点的双亲
 struct BinTreeNode* _pLeft; // 指向当前节点左孩子
 struct BinTreeNode* _pRight; // 指向当前节点右孩子
 BTDataType _data; // 当前节点值域
}


相关文章
|
30天前
|
存储
【数据结构入门指南】单链表
【数据结构入门指南】单链表
40 0
|
6月前
|
存储
【数据结构】二叉树的基本概念
【数据结构】二叉树的基本概念
41 0
|
6月前
|
存储 算法 搜索推荐
数据结构入门指南:二叉树
数据结构入门指南:二叉树
18 0
|
6月前
|
存储 数据管理 编译器
数据结构入门指南:顺序表
数据结构入门指南:顺序表
28 0
|
8月前
|
存储
数据结构之第八章、二叉树
是一种的数据结构,它是。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
60 0
|
9月前
|
存储 算法 编译器
数据结构之树与二叉树——算法与数据结构入门笔记(五)
数据结构之树与二叉树——算法与数据结构入门笔记(五)
|
11月前
|
存储
【数据结构入门】-二叉树的基本概念
今天的内容可是一个大头,比以往学的内容上了一个档次。大家对于这块内容一定要好好学,不是很理解的地方一定要及时解决,要不然到了后面的内容只会更加的痛苦。不过大家只要坚持学习的话,没有什么问题是我们解决不了的。大家一起加油啦!!!
64 0
|
存储 算法 Java
Java开发——21.数据结构(线性表+树)
数据存储的常用结构有:栈、队列、数组、链表、线性表、树、二叉树和红黑树...
Java开发——21.数据结构(线性表+树)
数据结构进阶 二叉搜索树
数据结构进阶 二叉搜索树
78 0
数据结构进阶 二叉搜索树
|
存储 Linux
【初阶数据结构】树和二叉树的基本概念和结构(上)
【初阶数据结构】树和二叉树的基本概念和结构
79 0
【初阶数据结构】树和二叉树的基本概念和结构(上)