php二叉排序树,二叉排序树(建树)

题目描述

二叉排序树,也称为二叉查找树。先给你N个关键值各不相同的结点,要求那你按顺序插入一个初始为空树的二叉排序中,每次插入成功后,求相应的父节点的关键字值,如果没有父节点,则输出-1.

输入

第一行一个数字N(N<=100),表示待插入节点数。

第二行,N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过10

8

输出

输出一行N个数,分别表示每次插入节点后,该节点对于的父节点的关键字值。

样例输入

5

2 5 1 3 4

样例输出

-1 2 2 5 3

提示

来源

AC code:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define LL long long

#define exp 1e-9

#define MAXN 1000010

using namespace std;

typedef struct BTNode{

int data;

BTNode *lchild;

BTNode *rchild;

}BTNode;

void insertBT(BTNode *&bt,int x)

{

BTNode *pre,*p;

p=bt;

int dir=0;

if(p==NULL)

{

bt = (BTNode *)malloc(sizeof(BTNode));

bt->data=x;

bt->lchild=NULL;

bt->rchild=NULL;

printf("-1 ");

}

else

{

while(p!=NULL)

{

pre=p;

if(p->data>x)

{

p=p->lchild;

}

else

{

p=p->rchild;

}

}

p = (BTNode *)malloc(sizeof(BTNode));

p->data=x;

p->lchild=NULL;

p->rchild=NULL;

if(pre->data>x)

{

pre->lchild=p;

}

else

{

pre->rchild=p;

}

printf("%d ",pre->data);

}

}

int main()

{

//freopen("D:\\in.txt","r",stdin);

int n,i,x;

scanf("%d",&n);

BTNode *bt=NULL;

for(i=1;i<=n;i++)

{

scanf("%d",&x);

insertBT(bt,x);

}

puts("");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值