//关于父节点可采用链表中pre和rear指针的思想,采用正常的循环即可
#include "stdio.h"
using namespace std;
struct TreeNode{
int data;
TreeNode *leftChild;
TreeNode *rightChild;
};
void insertBST(TreeNode * &root,int data){
TreeNode *node = new TreeNode;//建在堆中
node->data = data;
node->leftChild = NULL;
node->rightChild = NULL;
if(root == NULL){
root = node;
printf("%d\n",-1);
} else{
TreeNode *pre;
TreeNode *pos;
pos = root;
bool flag = true;
while (pos != NULL){
if(pos->data > data){
pre = pos;
pos = pos->leftChild;
flag = true;
} else{
pre = pos;
pos = pos->rightChild;
flag = false;
}
}
if(flag)
pre->leftChild = node;
else
pre->rightChild = node;
printf("%d\n",pre->data);
}
}
int main(){
int N,data;
scanf("%d",&N);
TreeNode *root = NULL;
for (int i = 0; i < N; ++i) {
scanf("%d",&data);
insertBST(root, data);
}
}