一、 树与二叉树的关系
二叉树不是树的一种特殊结构,他们是不同的树形结构,是不同的数据结构,不要将其搞混。
二、树的基本概念
1、树的定义(其逻辑结构)
简单来说
1 除了根结点外,每个节点都有可能有很多的直接后继。
2每个节点都有且只有一个直接前驱。
2、 基本术语
在这里,为了避免过多文字的杂述,我通过一个树的例子,在这棵树上,将树中的基本概念基本标出。
3、树的性质
1 树的节点树=所有节点的度数+1(根结点)
2 度为m的树中第i层至多有m^(I-1)个节点(i>=1)
三、二叉树的概念
1、逻辑结构特点
- 其树的度不超过2(<=2)
- 每个节点的孩子节点最多有两个(左孩子+右孩子,【孩子是有顺序的,但树没有】)
2、特殊的二叉树
- 满二叉树
一个有h层的二叉树,且其中含有2^h-1个节点,则为满二叉树。
- 完全二叉树
1.概念
通俗点说:一个有h层的二叉树,前h-1层是满的,最后一层是按照从左到右的顺序依次排列的。
2.性质
- 非空二叉树的叶子结点数=度为2的结点数+1 等价于n0=n2+1
- 非空二叉树的第h层最多有2^(h-1)个结点
- 高度为h的二叉树最多有2^h-1个结点
- 满二叉树的位置编号:左孩子:一个编号2;右孩子:一个编号2+1
- N个结点的满二叉树的h=log2(n+1)
- N个结点的满二叉树的h=log2(n+1)【向上取整】
3、二叉树的存储结构
1 顺序存储结构
用一组连续的存储单元地址自上而下、从左到右的存储二叉树
适用于:完全二叉树和满二叉树
不适用于:一般的二叉树。
二叉树的顺序存储结构图如图:
2 链式存储结构(一般采用)
链式存储中的结点结构以及伪算法描述如下图: