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;
}
php二叉排序树,二叉排序树(建树)相关推荐
- 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)
目录 树和二叉树 一.树 2.有序树和无序树 3.森林 4.树的基本性质 二.二叉树的概念 (1)二叉树的编号 1.二叉树和度为2的有序树的区别: 2.满二叉树 3.完全二叉树: 4.平衡二叉树: 5 ...
- 数据结构-判断一棵树是否为二叉排序树
判断一棵树是否为二叉排序树 二叉排序树的性质:如果按照中序遍历的方式遍历二叉排序树的话,遍历的数字是呈递增趋势的.我们根据这个思路去判断是否为二叉排序树. 思路: ①建树 ②设立一个变量去记录当前已经 ...
- 数据结构与算法-二叉排序树
一棵二叉排序树(Binary Sort Tree)(又称二叉查找树)或者是一棵空二叉树,或者是具有下列性质的二叉树: 1. 若它的左子树不空,则左子树上所有结点的键值均小于它的根结点键值: 2. 若它 ...
- 二叉查找树(二叉排序树)创建,插入,删除操作。
二叉排序树 二叉排序树是一个基础的树的数据结构.应用许多. 它的特性就是,左孩子小于parent.右孩子大于parent. 寻找节点 寻找节点就是直接依据数值的大小.从root节点開始遍历,大于当前遍 ...
- 【数据结构-树】3.详解二叉排序树(理论+代码)
二叉排序树 二叉排序树的定义 二叉排序树也称为二叉查找树.二叉排序树或者是一棵空树,或者是一棵具有如下特性的非空为茶树 若左子树非空,则左子树所有结点关键字值均小于根结点的关键字值 若右子树非空,则右 ...
- 833系列——二叉排序树
考纲中,二叉排序树在"查找"章节,要求为:二叉排序树及其基本操作. 其基本操作有:查找操作,插入操作,删除操作 一:定义 二叉排序树(Binary Sort Tree),又称二叉查 ...
- 大话数据结构 : 二叉排序树
二叉排序树 二叉排序树的好处在于插入 删除 查找的效率很高,比线性表和数组都好 二叉树稍微难一点的敌方在于删除,在删除一个既有左子树也有右子树的节点时比较麻烦,策略就是将要删除的节点的左子树中向右查找 ...
- 数据结构:二叉排序树
1.二叉排序树 二叉排序树:BST( Binary Sort( Search)Tree,又称二叉查找树(Binary Search Tree),亦称二叉搜索树.对于二叉排序树的任何一个非叶子节点,要求 ...
- java 二叉排序_java实现二叉排序树
最近终于静下心来,自己实现了个二叉排序树,还是很有成就感的. package tree; public class TreeNode { //结点存放的数据 public T data; //当前结点 ...
最新文章
- Spring 基于xml配置方式的AOP
- reactor官方文档译文(2)Reactor-core模块
- python格式字符串的参数不足_格式字符串的参数不足
- 最新综述:用于文本分类的数据增强方法
- Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识
- 致技术创业的朋友:其实销售很简单(Z)
- java演出厅选票_高仿猫眼电影选座(选票)模块-b
- kotlin 第一个程序_Kotlin程序添加两个矩阵
- mysql not like 没用_PHP - 使用NOT LIKE时,mysql查询不起作用
- GDC2017分享:移动VR开发者的赚钱之道
- emacs 替换模式_如何使用Emacs Org模式撰写博客
- 前端把信息放在弹框里显示出来_jsp + js + 前端弹出框
- spring容器创建bean对象的方式以及如何处理多个spring配置文件
- Windows-Exploit-Suggester
- 计算机关机时间设置方法,电脑如何设置定时关机 电脑定时关机设置方法
- Hack The Box——Academy
- hadoop-ykt(自定义key)
- matlab悬置非线性位移计算公式,动力总成悬置系统运动包络及工况载荷计算方法...
- JSP Web学习心得
- BFS算法 蓝桥杯长草问题
热门文章
- 利用顺序栈解决括号匹配问题(c++)-- 数据结构
- ajax 解决csrf的3种方法,input标签的文件上传
- 解决局域网共享问题,提示:无法访问,你可能没有权限使用网络资源
- 找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序
- 向pandas DataFrame添加一行
- 将分支指针移动到不同的提交而不签出
- 硬盘与电线挨着会高温吗_对着电线撒尿,会触电吗?
- nginx 命令_MAC 操作nginx命令
- python变量图片_在Python中向3D图添加第4个变量
- mysql bat备份_Windows下简单的Mysql备份BAT脚本分享