#include<iostream>
#include<deque>
#define N 10
using namespace std;
struct BTnode{
int value;
BTnode *left;
BTnode *right;
};
void fromTop2Bottom(BTnode *root){
if(!root)
return;
deque<BTnode*>que;
que.push_back(root);
while(que.size()){
BTnode *head=que.front();
que.pop_front();
cout<<head->value<<" ";
if(head->left)
que.push_back(head->left);
if(head->right)
que.push_back(head->right);
}
}
int main()
{
BTnode *arr[N+1];
for(int i=1;i<=N;i++){
arr[i]=(BTnode*)malloc(sizeof(BTnode));
arr[i]->left=NULL;
arr[i]->right=NULL;
arr[i]->value=i;
}
for(int i=1;i<=N/2;i++)
{
arr[i]->left=arr[2*i];
if(2*i+1<=N)
arr[i]->right=arr[2*i+1];
}
fromTop2Bottom(arr[1]);
return 0;
}
#include<deque>
#define N 10
using namespace std;
struct BTnode{
int value;
BTnode *left;
BTnode *right;
};
void fromTop2Bottom(BTnode *root){
if(!root)
return;
deque<BTnode*>que;
que.push_back(root);
while(que.size()){
BTnode *head=que.front();
que.pop_front();
cout<<head->value<<" ";
if(head->left)
que.push_back(head->left);
if(head->right)
que.push_back(head->right);
}
}
int main()
{
BTnode *arr[N+1];
for(int i=1;i<=N;i++){
arr[i]=(BTnode*)malloc(sizeof(BTnode));
arr[i]->left=NULL;
arr[i]->right=NULL;
arr[i]->value=i;
}
for(int i=1;i<=N/2;i++)
{
arr[i]->left=arr[2*i];
if(2*i+1<=N)
arr[i]->right=arr[2*i+1];
}
fromTop2Bottom(arr[1]);
return 0;
}