1.树的定义
树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:
⑴ 有且仅有一个特定的称为根的结点;
⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。
树的定义是采用递归方法
2.二叉树的遍历操作
树的遍历:从根结点出发,按照某种次序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。
2.1前序(根)遍历
若二叉树为空,则空操作返回;否则:
①访问根结点;
②前序遍历根结点的左子树;
③前序遍历根结点的右子树。
2.2中序(根)遍历
若二叉树为空,则空操作返回;否则:
①中序遍历根结点的左子树;
②访问根结点;
③中序遍历根结点的右子树。
2.3后序(根)遍历
若二叉树为空,则空操作返回;否则:
①后序遍历根结点的左子树;
②后序遍历根结点的右子树。
③访问根结点;
2.4层序遍历
二叉树的层次遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。
3.二叉树的定义
二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
4.二叉树的特点
⑴ 每个结点最多有两棵子树;
⑵ 二叉树是有序的,其次序不能任意颠倒。
5.特殊的二叉树
斜树
1 .所有结点都只有左子树的二叉树称为左斜树;
2 .所有结点都只有右子树的二叉树称为右斜树;
3.左斜树和右斜树统称为斜树。
4.1斜树
1. 在斜树中,每一层只有一个结点;
2.斜树的结点个数与其深度相同。
6.二叉树的双亲
二叉树每一个节点最多出度为2,即它的左孩子和右孩子。和链表的next类似,二叉树的节点间关系依靠双亲
root->left(左孩子)和root->right(右孩子)来表示。二叉树的递归也经常是访问完当前节点之后root->left访问root
的左孩子,通过root->right访问右孩子,进而完成对整个树所有节点的访问。
7.二叉树的深度
从根节点到叶子结点的距离称为深度,最大深度为根节点到叶子节点的最大距离,最小距离为根节点到叶子节点的最小距离。
8.二叉树的等价
两颗二叉树等价只有当结构与节点值完全相同时才为等价,即两个根节点的值相同并且左子树等价左子树,右子树等价右子树这两颗树才等价。
9.二叉树的递归
二叉树的大多数节点都连接着左右两个子树(有些节点没有两个子树),每一个子树都有一个根节点。在访问完当前根节点后以当前根节点的孩子
为新的根节点访问,进而把一棵树按照一个个向下移的根节点拆分为更小的子树,对最小的子树进行的操作递归后即为对整棵树的操作。