数据结构二叉排序树应用一

news2025/1/16 16:07:04

2022.11.19

二叉排序树应用一

  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明
  • C/C++代码


任务描述

本关任务:输入一个无序序列,创建一棵二叉排序树。

相关知识

为了完成本关任务,你需要掌握:1.二叉排序树定义,2.如何创建一棵二叉排序树。

二叉排序树定义
二叉排序树:即一个二叉树,它的每一个结点的左孩子的data值比当前结点的data值小,而右孩子结点的data值比当前结点的data值大。
在这里插入图片描述
如何创建一棵二叉排序树
二叉排序树的创建过程:

  1. 创建一个根节点,将无序序列的第一个元素放入根节点;
  2. 依次将后面的无序序列依次插入二叉排序树,若比根节点值小,则递归插入左子树,否则递归插入右子树。

编程要求

本关的编程任务是补全右侧代码片段insertBiSortTree和creatBiSortTree中Begin至End中间的代码,具体要求如下:

  1. 在insertBiSortTree中,实现向升序二叉排序树插入元素;
  2. 在creatBiSortTree中,实现创建升序二叉排序树。

测试说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是平台的测试样例:

测试输入
15
18 10 16 13 7 5 4 8 15 14 20 1 6 3 19
预期输出
1 3 4 5 6 7 8 10 13 14 15 16 18 19 20

输入说明
第一行:元素个数n
第二行:n个无序数列

输出说明
二叉排序树的中序遍历是有序序列,程序输出中序遍历结果

开始你的任务吧,祝你成功!

C/C++代码

//
//  binary_sort_tree.cpp
//  BinarySortTree
//
//  Created by ljpc on 2018/5/11.
//  Copyright © 2018年 ljpc. All rights reserved.
//

#include "binary_sort_tree.h"

BiTreeNode* insertBiSortTree(BiTreeNode* root, int key)
// 功能:实现向升序二叉排序树插入元素
// 输入:待插入元素key
// 返回:升序二叉排序树根节点
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
    if (root == NULL)
    {
        BiTreeNode *newNode = new BiTreeNode(key);
        return newNode;
    }
    if (root->data > key)
    {
            
        if (root->left != NULL)
        {
            insertBiSortTree(root->left, key);
        }
        else
        {
            BiTreeNode *newNode = new BiTreeNode(key);
            root->left = newNode;
        }
    }
    else if (root->data < key)
    {
        if (root->right != NULL)
        {
            insertBiSortTree(root->right, key);
        }
        else
        {
            BiTreeNode *newNode = new BiTreeNode(key);
            root->right = newNode;
        }
    }
    return root;
    /********** End **********/
}

BiTreeNode* creatBiSortTree(int* arr, int n)
// 功能:实现创建升序二叉排序树
// 输入:无序整数数列arr,数列个数n
// 返回:升序二叉排序树根节点
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
    if (arr == NULL)
    {
        return NULL;
    }
    int *p = arr;
    BiTreeNode* root = NULL;
    for (int i = 0; i < n; i++) {
        root = insertBiSortTree(root, *p++);
    }
    return root;
    /********** End **********/
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑*头条_第6章_admin端功能开发通用后端封装

黑*头条_第6章_admin端功能开发&通用后端封装 文章目录黑*头条_第6章_admin端功能开发&通用后端封装admin端功能开发&通用后端封装今日目标1 admin端的登录功能实现1.1 admin项目搭建1.2 登录接口-后端1.2.1接口定义1.2.2mapper定义1.2.3 代码编写1.3 前端项目导入…

FCN的代码解读

目录 模型初始化 VGG初始化 FCN初始化 图片的预处理 图片处理 图片编码 计算相关参数 模型训练 一个小问题 完整代码 参考 最近浅研究了一下关于图像领域的图像分割的相关知识&#xff0c;发现水还是挺深的&#xff0c;因为FCN差不多也是领域的开山鼻祖&#xff0c;所以就先从…

Postman进阶篇(十)-在pre-request script或test script中使用pm对象访问变量

在之前的文章中介绍过postman中的两个脚本——pre-request script或test script&#xff0c;在这两个脚本中都有使用到pm对象。&#xff08;pre-request script详细介绍、Test script详细介绍&#xff09;pm对象是在postman的脚本中非常重要&#xff0c;也是十分常用的方法。本…

Tomcat使用与Servlet

目录 Tomcat Get与Post请求的区别 Servlet 体系 请求流程 生命周期 配置loadOnStartup 线程安全问题 问题原因 解决方案 Servlet核心类 请求 响应 转发与重定向 转发 重定向 Cookie与HttpSession Cookie HttpSession ServletConfig ServletContext 总结 F…

基于javaweb,ssm学生宿舍管理系统(带论文)

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat8.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;非前后端分离 前端技术&#xff1a;vue.jselementUI等框架实现 服务端技术&#xff1a;springspringmvcmybat…

Java--Lambda(1)简介

文章目录0 写在前面1 优点2 实现3 写在末尾0 写在前面 阅读公司前辈写的代码的时候&#xff0c;有一些地方总不理解&#xff0c;后来才知道是Lambda表达式。 所以学习了一下&#xff0c;在此记录一下。 通过百度搜索得知&#xff1a;Lambda 表达式也叫作匿名函数&#xff0c…

简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图)

简单易懂的 全景图高清下载方法以及原理简要解析&#xff08;支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图&#xff09; 文章目录简单易懂的 全景图高清下载方法以及原理简要解析&#xff08;支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图&#xff09…

【Linux】在Xilinx平台上实现UVC Gadget(1)

【Linux】在Xilinx平台上实现UVC Gadget&#xff08;1&#xff09;前言&#xff1a;关于UVC一、创建Petalinux工程并修改设备树1) 创建一个基本的petalinux工程2) 配置sstate和downloads3) 配置内核4) 修改设备树二、在petalinux下添加uvc-gadget测试程序1) 创建一个空应用程序…

Python爬虫采集框架——Scrapy初学入门

一、安装Scrapy依赖包 pip install Scrapy 二、创建Scrapy项目&#xff08;tutorial&#xff09; scrapy startproject tutorial 项目目录包含以下内容 tutorial/scrapy.cfg # deploy configuration filetutorial/ # projects Python module, youl…

Deformable Attention学习笔记

Deformable Attention学习笔记 Vision Transformer with Deformable Attention Abstract Transformer 最近在各种视觉任务中表现出卓越的表现。大的(有时甚至是全局的)接受域使Transformer模型比CNN模型具有更高的表示能力。然而&#xff0c;单纯扩大接受野也会引起一些问题…

Linux【进程间通信】

目录 一、什么是进程间通信 管道 管道的原理 匿名管道 1.简单写一个管道 2.总结管道的特点&#xff0c;理解以前的管道 3.扩展 如何写一个进程池&#xff1f; 创建Makefile文件 创建我们的任务头文件Task.cpp 创建我们的主程序文件 一、什么是进程间通信 进程的运…

java项目-第149期ssm师生交流平台_java毕业设计_计算机毕业设计

java项目-第149期ssm师生交流平台-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm师生交流平台》 该项目分为3个角色&#xff0c;管理员、学生和老师。 学生可以浏览前台查看教学资源、申请做作业、论坛信息、新闻资讯等信息查看。 同时可以跳转…

[MQ] 延迟队列/延迟插件下载

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

Linux基本指令3——文件操作

Linux内核&#xff1a;Centos 7.6 64位 find指令 按文件名查找文件的用法&#xff1a;find [路径] -name [文件名] 作用&#xff1a;可以查找目标文件 找到后用nano&#xff0c;通过绝对路径打开目标文件。目前只需要知道这种程度就行了。 grep指令 语法&#xff1a;gre…

浅谈非线性回归(non-linear regression)

文章目录浅谈非线性回归&#xff08;non-linear regression&#xff09;引言最小二乘多项式拟合非线性拟合Gauss–NewtonGauss–NewtonGauss–Newton算法[1]Levenberg–MarquardtLevenberg–MarquardtLevenberg–Marquardt算法[2]Quasi−NewtonQuasi-NewtonQuasi−Newton方法&a…

这样做框架结构图,让你的PPT更有创意!

已剪辑自: https://zhuanlan.zhihu.com/p/58834710 嗨&#xff0c;各位木友们好呀&#xff0c;我是小木。 昨天&#xff0c;有个跟我一样鸟人的鸟人让我帮忙做个框架结构图&#xff1a; 可惜当时我不在办公室&#xff0c;不然我真的一分钟就能把图做给他… ▼ 在文本框里输入…

RabbitMQ_交换机

简单理解交换机在RabbitMQ中扮演的角色 交换机在RabbitMQ中扮演消息系统中枢&#xff0c;将从生产者处收集的消息转发至对应的消息队列处&#xff0c;等待消费者消费 提前说明交换机 与 routing key 与 消息队列的关系 channel.queueBind(queueName, exchangeName, routingKey)…

git4:git整合IDEA和国内代码托管中心码云(自建代码托管平台)

1.配置忽略文件 IDE会生成.idea等无关项目实际功能的文件忽略这些文件配置.ignore 然后再讲此配置文件导入.gitconfig文件中idea中导入git程序 2.测试IDEA vcs 直接项目中 git add commit即可切换版本&#xff08;提交第二版&#xff0c;修改会变成蓝色&#xff0c;然后提交…

血泪史!外包如何找到靠谱的兼职程序员?

好哥们公司上半年的重点项目&#xff0c;黄了。 公司是做线下项目起家的&#xff0c;受到各种不可抗力因素影响改为线上举办。这次的转型老板很看重&#xff0c;但由于整个公司都没有擅长这块的技术开发&#xff0c;于是托朋友找了个外包团队完成。 几十个W花进去&#xff0c;做…

进销存记账软件十大品牌合集,看看哪一款适合你

随着管理成本的提高&#xff0c;加上信息技术的发展&#xff0c;各行各业都要求应用专业的技术软件来提高管理效率&#xff0c;中小商户也不例外。 过往的手工记账已经满足不了需求&#xff0c;进销存记账软件应运而生。 进销存记账软件是时代的产物&#xff0c;也是中小商户…