二叉树基本知识

一、二叉树概念

1. 二叉树

定义:二叉树是n(n≥0)个节点的有限集合,该集合或者为空集,或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子数的二叉树组成。

特点:①每个结点最多有两棵子树,二叉树中不存在度大于2的结点;

           ②左子树和右子树是有顺序的,次序不能任意颠倒;

           ③即使树中某结点只有一棵树,也区分它是左子树还是右子树。

2. 特殊二叉树概念

①斜树:所有的结点都只有左子树的二叉树叫左斜树,所有结点都是只有右子树的二叉树叫右斜树,两者统称为斜树;斜树的特点是每一层都只有一个结点(线性表结构可理解为树的一种极其特殊的表现形式)

②满二叉树:在一棵二叉树中,所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树;

满二叉树的特点:叶子只能出现在最下一层;非叶子结点的度一定是2;在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。

③完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为i(1≤ i ≤ n)的节点与同样深度的满二叉树中编号为i的结点在二叉树中位置相同,则这棵二叉树称为完全二叉树;满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。

特点:叶子结点只能出现在最下两层;最下层的叶子一定集中在左部连续位置;倒数二层,若有叶子结点,一定都在右部连续位置;如果结点度为1,则该结点只有左孩子,即不存在只有右子树的情况;同样结点数的二叉树,完全二叉树的深度最小。

二、二叉树性质

性质1:在二叉树的第i层上至多有2i-1个结点(i≥1);

性质2:深度为k的二叉树至多有2k-1个结点(k≥1);

性质3:对任何一棵二叉树T,如果其终端结点数为n0 ,度为2的结点数为n2,则n0=n2+1;

性质4:具有n个结点的完全二叉树的深度为不大于(|log2n|+1)的最大整数;

性质5:如果对一棵有n个结点的完全二叉树(深度为性质4所示)的结点按层序编号(从第1层到第|log2n+1|层,每层从左到右),对任一结点i(1≤ i ≤ n)有:

如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点|i/2|;

如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i;

如果2i+1>n,则结点i无右孩子,否则其右孩子是结点2i+1。

三、二叉树的遍历

定义:二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问依次且仅被访问一次。

1.前序遍历:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。

2.中序遍历:若树为空,则返回空操作,否则从根结点(并不是先访问根结点)中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。

3.后序遍历:若树为空,则返回空操作,否则从左到右先叶子后节点的方式遍历访问左右子树,最后是访问根结点。

4.层序遍历:若树为空,则返回空操作,否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。

已知前序遍历序列和中序遍历序列可以唯一确定一棵二叉树,已知后序遍历序列和中序遍历序列可以唯一确定一棵二叉树,但是已知前序和后序遍历序列不能确定一棵二叉树。

未完......

猜你喜欢

转载自www.cnblogs.com/alicsu/p/9152437.html