二叉树的概念,二叉树的数据存储结构,二叉树的性质,二叉树的遍历方法数据结构-树的学习(3)
来源:互联网 发布:worktile类似软件 编辑:程序博客网 时间:2024/06/06 19:03
二叉树的定义
二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两颗互不相交的,分别称为根结点的左子树和右子树的二叉树组成。
二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两颗互不相交的,分别称为根结点的左子树和右子树的二叉树组成。
二叉树的特点有:
每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。
左子树和右子树是有顺序的,次序不能任意颠倒。
即使树中某结点只有一颗子树,也要区分是右子树还是左子树。
每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。
左子树和右子树是有顺序的,次序不能任意颠倒。
即使树中某结点只有一颗子树,也要区分是右子树还是左子树。
特殊二叉树
1、斜树
所有的结点都只有左子树的二叉树叫做左斜树,所有的结点都只有右子树的二叉树叫做右斜树。这两者统称为斜树。
2、满二叉树
在一棵二叉树中,如果所有的分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。
3、完全二叉树
对一颗具有n各结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树编号为i的结点在二叉树中位置完全相同,则这颗二叉树称为完全二叉树。
1、斜树
所有的结点都只有左子树的二叉树叫做左斜树,所有的结点都只有右子树的二叉树叫做右斜树。这两者统称为斜树。
2、满二叉树
在一棵二叉树中,如果所有的分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。
3、完全二叉树
对一颗具有n各结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树编号为i的结点在二叉树中位置完全相同,则这颗二叉树称为完全二叉树。
二叉树的性质:
1)在二叉树的第i层上至多有(2^(i-1))个结点
2)深度为k的二叉树至多有(2^k - 1)个结点
3)对任意一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1;
4)具有n个结点的完全二叉树的深度为((log2n)+1)
1)在二叉树的第i层上至多有(2^(i-1))个结点
2)深度为k的二叉树至多有(2^k - 1)个结点
3)对任意一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1;
4)具有n个结点的完全二叉树的深度为((log2n)+1)
二叉树的存储结构
二叉树顺序存储结构:一般只适用于完全二叉树
顺序存储结构就是用一维数组二叉树中的结点,并且节点的储存位置和数组的下标要体现结点之间的逻辑关系。
顺序存储结构就是用一维数组二叉树中的结点,并且节点的储存位置和数组的下标要体现结点之间的逻辑关系。
二叉链表:
二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域,我们成这样的链表为二叉链表
结点代码结构:
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}
二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域,我们成这样的链表为二叉链表
结点代码结构:
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}
二叉树的遍历方法
前序遍历:
中序遍历:
后序遍历:
层序遍历:
中序遍历:
后序遍历:
层序遍历:
线索二叉树:
阅读全文
1 0
- 二叉树的概念,二叉树的数据存储结构,二叉树的性质,二叉树的遍历方法数据结构-树的学习(3)
- 【数据结构】二叉树的顺序存储结构--遍历二叉树
- 数据结构 二叉树的性质
- 二叉树 二叉树的性质 存储结构 遍历二叉树 C实现二叉树的创建和遍历 线索二叉树
- 二叉树 二叉树的性质 存储结构 遍历二叉树 C实现二叉树的创建和遍历 线索二叉树
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- 二叉树的性质
- USACO section1.3 Barn Repair
- vue + webpack 起手式
- 配置MVC
- Eclipse导入外部jar包
- RabbitMQ实践
- 二叉树的概念,二叉树的数据存储结构,二叉树的性质,二叉树的遍历方法数据结构-树的学习(3)
- JSP页面中用绝对路径显示图片
- json格式和string了类型的相互转化
- selenium-server打开chrome提示chromedriver.exe已停止工作
- 计蒜客 微软大楼设计方案(中等)
- windows下多版本python环境变量设置与pip不同版本方法(三步骤)
- 浅谈 C# ref 和 out 的使用方法
- 【SLAM】同时定位与地图创建在无人车领域的应用探索
- HAWQ取代传统数仓实践(十四)——事实表技术之累积快照