树的知识点整理
树的概念
概念A
树是一种非线性的数据结构,能很好地描述有分支和层次特性的数据集合。
一棵树是由n(n≥0)个元素组成的有限集合。
1)每个元素都可以称为结点(node):
2)任意一棵非空树中(>0),有一个特定的结点,称为根结点或树根(root);
3)在一棵非空树中,结点a是树的一个结点,由a以及的所有后代组成的结构,称为树的子树。
4)在一棵非空树中,从某个结点向下,分出若干结点a1,
a2,...分出的结点α以及它的所有后代,称为结点的子树。
5)没有子树的结点,称为叶结点。
一个结点的子树个数,称为这个结点的度。
树中各结点度的最大值,称为这棵树的度。
棵树中所有的结点层次的最大值称为树的深度。
概念B
二叉树是一种特殊的树型结构,树中结点的度都不大于2,它是一种最简单且最重要的树。
在二叉树的第层上最多有2的i-1次方个结点(i≥1)。
深度为k的二叉树最多有2的k次方-1个结点(k≥1)。
满二叉树:
一棵深度为k且有2的k次方-1个结点的二叉树称为满二叉树。
完全二叉树:
二叉树中除去最后一层结点为满二叉树,且最后一层的结点依次从左到右分布。
需要注意的是,满二叉树也是完全二叉树。
二叉树的遍历
二叉树是由三个基本单元组成:根结点、左子树和右子树。
二叉树的三种遍历:
先序:访问根结点一>遍历左子树一>遍历右子树(简称:根左右)
中序:遍历左子树一>访问根结点一>遍历右子树(简称:左根右)
后序:遍历左子树一>遍历右子树一>访问根结点(简称:左右根)
先序遍历
访问根结点一>遍历左子树一>遍历右子树(简称:根左右)
先序序列的第一个点是根结点。
在子树的先序序列中,第一个点是该子树的根。
中序遍历
遍历左子树一>访问根结点一>遍历右子树(简称:左根右)
第1步:有左子树一直找左子树。
第2步:当没有左子树或左子树已经遍历完,访问根结点。
第3步:找右子树,重复上述步骤。
中序序列可以通过根结点划分左右子树。
后序遍历
遍历左子树一>遍历右子树一>访问根结点(简称:左右根)
第1步:有左子树一直找左子树。
第2步:没有左子树,找右子树,重复上述步骤。
第3步:当没有右子树或左右子树已经遍历完,访问根结点。
后序序列的最后一个点是根结点。
在子树的后序序列中,最后一个点是该子树的根。
序列构造二叉树
中序遍历序列和先序遍历序列可以构造一棵二叉树。
1.根据先序遍历序列确定根结点
2.根据中序遍历序列确定左右子树结点
3.循环上述步骤,直到确定所有结点
中序遍历序列和后序遍历序列可以构造一棵二叉树。
1.根据后序遍历序列确定根结点
2.根据中序遍历序列确定左右子树结点
3.循环上述步骤,直到确定所有结点
中序遍历序列和层序遍历序列可以构造一棵二叉树。
1.根据层序遍历序列确定根结点
2.根据中序遍历序列确定左右子树结点
3.循环上述步骤,直到确定所有结点