一、输入
第一行输入N
第二行输入N个数,用这N个数构建唯一的完全二叉搜索树
二、输出
输出构建好的完全二叉搜索树,层序输出
三、示例
1.输入
10
1 2 3 4 5 6 7 8 9 0
2.输出
6 3 8 1 5 7 9 0 2 4
四、代码 — C语言实现
思路:
-
将序列存到数组CBT中,再将数组排序,就得到一个按层级遍历从小到大排列的完全二叉树
-
再对完全二叉树进行中序遍历,每次中序遍历节点输出的时候,把数组CBT(完全二叉树)里的元素按顺序(由小到大)赋给另一个数组CBST(完全二叉搜索树)的当前下标。因为二叉搜索树中序遍历是先输出小值,再输出大值
-
即先得到完全二叉树,再通过完全二叉树固定节点位置,通过二叉搜索树中序遍历是升序序列的特点,将中序遍历先遍历得到的节点值改为最小值,依次更改即可得到完全二叉搜索树。利用数组储存是关键
实现:
#include "stdio.h"
int CBT[1002]; //储存完全二叉树
int CBST[1002]; //储存完全二叉搜索树
int n; //输入的二叉树节点数
int index = 1;//CBST数组的初始下标
void sort(); //将数组升序排序
void