博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法问题 二叉排序树
阅读量:5328 次
发布时间:2019-06-14

本文共 1338 字,大约阅读时间需要 4 分钟。

题目描写叙述:

        二叉排序树,也称为二叉查找树。

能够是一颗空树。也能够是一颗具有例如以下特性的非空二叉树:

        1. 若左子树非空,则左子树上全部节点keyword值均不大于根节点的keyword值;
        2. 若右子树非空,则右子树上全部节点keyword值均不小于根节点的keyword值。
        3. 左、右子树本身也是一颗二叉排序树。

  如今给你N个keyword值各不同样的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后。求对应的父亲节点的keyword值。假设没有父亲节点,则输出-1。

输入:

输入包括多组測试数据,每组測试数据两行。

第一行,一个数字N(N<=100),表示待插入的节点数。
第二行,N个互不同样的正整数,表示要顺序插入节点的keyword值。这些值不超过10^8。

输出:

输出共N行。每次插入节点后,该节点相应的父亲节点的keyword值。

例子输入:
52 5 1 3 4

例子输出:

-1

2

2

5

3

#include 
using namespace std;struct bitree{ int data, parent_num; bitree *lchild, *rchild;};void insert(bitree *root_,bitree * &root, int & data){ if (!root) { root = new bitree; root->data = data; root->lchild = NULL; root->rchild = NULL; root->parent_num =root_->data; } if (data > root->data) { insert(root, root->rchild, data); } if (data < root->data) { insert(root, root->lchild, data); }}void inorder(bitree * &root){ if (root) { cout << root->parent_num << endl; inorder(root->lchild); inorder(root->rchild); }}int main(){ bitree *root = NULL; int n; cin >> n; int *a = new int[n]; for (int i = 0; i < n; i++) cin >> a[i]; if (!root) { root = new bitree; root->data = a[0]; root->lchild = NULL; root->rchild = NULL; root->parent_num = -1; } for (int i = 1; i < n;i++) insert(root,root, a[i]); inorder(root); return 0;}

转载于:https://www.cnblogs.com/yfceshi/p/7220400.html

你可能感兴趣的文章
String类中的equals方法总结(转载)
查看>>
标识符
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
php中的isset和empty的用法区别
查看>>
把word文档中的所有图片导出
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
正则表达式
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
加固linux
查看>>
WPF中Image显示本地图片
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
js千分位处理
查看>>