Advertisement

判断是否为二叉搜索树(25分)PTA C++代码

阅读量:

一个二叉搜索树实例按照递归的方式定义为满足以下特性的二叉树:任何一个节点都满足特定条件。

复制代码
    其左子树中所有结点的键值小于该结点的键值;
    其右子树中所有结点的键值大于等于该结点的键值;
    其左右子树都是二叉搜索树。

其镜像即为通过将所有节点的左右子树互换位置而形成的结果。

给定一组整数值的键值序列,请编写程序以确定该序列是否是某棵二叉搜索树或其实现镜像版本的前序遍历结果。

给定的第一行提供一个不超过1000的正整数N;随后的一行包含N个键值对

如果输入数据序列是对一棵二叉搜索树或者其镜像版本执行先根遍历操作得到的记录,则应在第一行以 'YES' 标识这一点;随后,在第二行显示其后根遍历顺序。为确保格式正确,请注意每两个数字之间留一个空格,并保证每行开头和结尾不得留有额外空白字符。否则不显示结果标记 'NO' 。

7
8 6 5 7 10 8 11

输出样例 1:

YES
5 7 6 8 11 10 8

输入样例 2:

7
8 10 11 8 6 7 5

输出样例 2:

YES
11 8 10 7 5 6 8

输入样例 3:

7
8 6 8 5 10 9 11

输出样例 3:

解题思路:我们需要判断给定序列是否为二叉搜索树的先序序列或其镜像的先序序列。首先根据该序列建立一棵正常的二叉搜索树,并分别

全部评论 (0)

还没有任何评论哟~