二叉树的四种遍历

来源:互联网 发布:windows位图结构 编辑:程序博客网 时间:2024/06/10 15:32

二叉树的遍历主要有四种:

 前序遍历(先根遍历、先序遍历): 遵循“根-左-右”的递归遍历思想, 根一定是当前子二叉树先序遍历序列的第一个元素;

 中序遍历(中根遍历): 遵循“左-根-右”的递归遍历思想,根位于是当前子二叉树中序遍历序列的中部位置,左边是当前根的左二叉树,右边是当前根的右二叉树;

 后序遍历(后根遍历): 遵循“左-右-根”的递归遍历思想, 根一定是遍历序列的最后一个元素;

 层次遍历: 遵循从上到下,直左而右的遍历思想, 根一定是遍历序列的第一个元素。

【例题】某二叉树的先序遍历序列为 c a b f e d g,中序遍历序列为 a b c d e f g,则该二叉树是()

A、完全二叉树      B、最优二叉树      C、平衡二叉树      D、满二叉树

解析:

1.根据题意, 整个二叉树的先序遍历序列为 c a b f e d g,可知 c 是整个二叉树的树根,再结合中序遍历序列 a b c d e f g可知以 c 为根的左二叉树中序遍历序列为 ab(左子树由节点 ab 组成),右二叉树中序遍历序列为 defg(右子树由节点 defg 组成), 再返回过来看先序遍历序列,根据“根-左-右”思想,左子树的先序遍历序列为 ab,右子树先序遍历序列为 f e d g。 此时得到如下的二叉树:


2.先构造根节点的右子树形状。 从上图看, c 节点的左子树包含 a 与 b 两个节点, 此左子树先序遍历序列为“ ab”可知a 为左子树的根,再结合中序遍历序列为“ a b”,根据中序序列“左-中-右”规律知以 a 为根节点的左子树为空,而右子树由b 组成,到此可得出根节点 c 的左子树构成形状如下:


3. 接下来继续构造根节点 c 的右子树形状。 节点 c 的右子树由 defg 四个节点构成,对应的前序遍历序列为 f e d g,根据“根-左-右”思想, f 为右子树的根;而右子树中序遍历序列为 d e f g,根据“左-根-右”的思想知根节点 f 的左子树由 de构成,右子树由 g 构成。到此可得出二叉树形状如下:


4.最后确认以 f 为根节点的左子树构成即可。根据题意, f 为根节点的左子树先序遍历序列为 ed 知 f 的左子树中 e 为根节点;再根据 f 为根节点的左子树中序遍历 de 知 e 为根节点的左子树为 d,右子树为空。最终可得出二叉树形状如下:


       完全二叉树的特点是若一个结点没有左子结点,则它必定没有右子结点,所以一定是叶子结点。完全二叉树中度为 1 的结点数只能为 0 个或 1 个。 本题的二叉树不满足完全二叉树的特点要求(如节点 a 无左节点, 但却有右节点),并非一棵完全二叉树。

       带权路径长度最小(即代价最小)的二叉树称为最优二叉树或赫夫曼树,很显然本题的二叉树不是一棵最优二叉树。

       一棵深度为 k 且有 2k-1 个结点的二叉树称为满二叉树。满二叉树中不存在度数为 1 的结点。本题的二叉树显然不是一棵满二叉树, 因其存在度为 1 的节点 a、 e。

       平衡二叉树或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过 1。

        本题的二叉树满足平衡二叉树的特点要求,故本题选择 C 选项。

1 0
原创粉丝点击