- 题目要求
04-树6 Complete Binary Search Tree (30分) 题目分析
题目就是给出一棵完全二叉搜索树的各个结点的值,然后让我们输出该树层序遍历的结果。
我们首先可以分析一下,完全二叉搜索树 有什么特点?显然可以知道:
1.它是一棵完全二叉树,那么可以用数组方式来存储(如 a[] 来存储)。如果从下标1开始存储,那么任何一个结点 a[i] ,它的左孩子为 a[2*i] ,右孩子为 a[2*i+1] (如果有的话)。
2.它还是一棵搜索树,那么它中序遍历的结果一定是从小到大的。
然后我们可以试着将问题转化,很容易想到,我们可以将给出的结点从小到大排序,那么就相当于是得到了该 完全二叉搜索树 的 中序遍历 的结果。
问题就转化为:如何根据中序遍历的结果来构造这棵完全二叉搜索树 。
想一想这棵树是用数组来存储的,再想一想中序遍历的特点(先遍历左子树,然后输出根结点,然后遍历右子树)。
我们先申请好了完全二叉搜索树的空间,现在里面是空的,那么我们来中序遍历这棵空的完全二叉搜索树,遍历的时候就把真正中序遍历的结果放进去这棵树中,那么我们就构造出了这棵完全二叉搜索树。我的代码
#in