目录:
一. 树的概念
1、树的特性
在现实生活中,一般的树长这个样子的:
但是在编程的世界中,我们一般把树“倒”过来看,这样容易我们分析:
树是一种数据结构,它是由n个有限结点组成一个具有层次关系的集合。。它具有以下的特点:
- 每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树;
- 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构。
- 1)一棵树中的任意两个结点有且仅有唯一的一条路径连通;
- 2)一棵树如果有n个结点,则它一定有n−1条边;
- 3)在一棵树中加一条边将会构成一个回路。
2、二叉树
- 1)二叉树是一种特殊的树,二叉树的特点是每个结点最多有两个儿子。
- 2)二叉树使用范围最广,一颗多叉树也可以转化为二叉树。
- 3)二叉树的子树有左右之分,其次序不能任意颠倒。
3、满二叉树
- 1)二叉树中每个内部节点都有两个儿子,满二叉树所有的叶节点都有相同的深度。
- 2)满二叉树是一棵深度为h且有2h−1个结点的二叉树。
4、完全二叉树
- 完全二叉树就是除了最后一排,其余的都是满二叉树,最后一排的节点都连续靠左。
- 若设二叉树的高度为h,除了第h层外,其他层的结点数都达到最大个数,第h层从右向左连续 缺若干个结点,则为完全二叉树。
5、树的特点
-
1)如果一棵完全二叉树的父节点编号为K,则其左儿子的编号是2K,右儿子的结点编号为2K+1