跳转至

二叉树 - 遍历

快速排序就是个二叉树的前序遍历,归并排序就是个二叉树的后序遍历

2 种方法实现二叉树的前序遍历。

递归和非递归

按层打印二叉树

输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入

   8
  /\
 6  10
/ \ /\
5 7 9 11

输出 8 6 10 5 7 9 11

二元树的深度

题目:输入一棵二元树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树:

                                     10
                                  /     \
                                 6        14
                              /         /   \
                             4         12     16

输出该树的深度 3。

分析:这道题本质上还是考查二元树的遍历。对于一颗完全二叉树,要求给所有节点加上一个 pNext 指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将 pNext 指针指向 NULL;给出程序实现,并分析时间复杂度和空间复杂度。

二元树的最小深度

例如:输入二元树:

                                     10
                                   /   \
                                  6     14
                                       /   \
                                     12     16

输出该树的最小深度 2。

完全二叉树的节点个数

判断整数序列是不是二元查找树的后序遍历结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回 true,否则返回 false。

例如输入 5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:

    8
  /  \
  6   10
  /\  / \
  5 7 9 11

因此返回 true。如果输入 7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回 false。