完全二叉搜索树的中序遍历是一有序序列
对一有序序列按照中序遍历建立的完全二叉数即为完全二叉搜索树


直接用完全二叉树的性质来,左右孩子分别为根节点2倍和2倍+1,。通过该性质对有序的排列进行中序遍历可建树。
#include<cstdio>
#include<algorithm>
using namespace std;
int node[1010],tree[1010];
int N,pos;
void creatTree(int root){
if(root>N) return;
int lchild=root*2,rchild=root*2+1;
creatTree(lchild);
tree[root]=node[pos++];
creatTree(rchild);
}
bool cmp(int a,int b){
return a<b;
}
int main(){
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%d",&node[i]);
}
sort(node,node+N,cmp);
pos=0;
creatTree(1);
for(int i=1;i<=N;i++){
printf("%d",tree[i]);
if(i<N){
printf(" ");
}
}
}
这篇博客讲述了如何从一个有序序列通过中序遍历来构建完全二叉搜索树。首先,通过排序输入的序列,然后按照完全二叉树的性质,左孩子节点为根节点的2倍,右孩子节点为2倍加1,递归地构建树结构。最后,进行中序遍历并打印树的节点,以展示构建过程。
5075

被折叠的 条评论
为什么被折叠?



