1064. Complete Binary Search Tree (30)

来源:互联网 发布:联通大数据公司 编辑:程序博客网 时间:2024/05/15 13:01

点击打开链接


由完全二叉树和二叉搜索树构造出二叉树,然后层次遍历

先画出完全二叉树的模样,即确定左右孩子,因为都存储的是序号,左孩子为2*i,右孩子为2*i+1

由于bst中序遍历为有序的,因此中序遍历时确定data值

#include <cstdio>#include <algorithm>using namespace std;#define  MAX 10010struct no{int data;int lchild;int rchild;}node[MAX];int n;int num[MAX];void create(){for(int i=1;i<=n;i++){if(2*i<=n){node[i].lchild=2*i;}else{node[i].lchild=-1;}if(2*i+1<=n){node[i].rchild=2*i+1;}else{node[i].rchild=-1;}}}int i=1;void inorder(int x){if(x!=-1){inorder(node[x].lchild);node[x].data=num[i++];inorder(node[x].rchild);}}int main(){freopen("in.txt","r",stdin);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&num[i]);}sort(num+1,num+n+1);create();inorder(1);for(int i=1;i<=n;i++){if(i==n){printf("%d\n",node[i].data);}else{printf("%d ",node[i].data);}}return 0;}



0 0
原创粉丝点击