合并二叉排序树

2023-10-29

描述:
先序建立两棵二叉排序树,采用二叉链表结构存储,将这两棵二叉排序树合并成一棵新的二叉排序树,并按照中序序列输出合并后的二叉排序树。

输入:
输入两行先序遍历的整型数据,并以此分别建立两棵二叉排序树(其中整型数据必须为大于等于零的整数)。
如输入某二叉排序树的先序序列为:12 8 4 -1 -1 10 -1 -1 16 13 -1 -1 18 -1 -1(其中-1代表空树)。

输出:
按照中序序列输出合并后的二叉排序树(输出结果后换行)。

输入样例:

12 8 4 -1 -1 10 -1 -1 16 13 -1 -1 18 -1 -1
17 6 2 -1 -1 9 -1 -1 24 19 -1 -1 26 -1 -1

输出样例:
2 4 6 8 9 10 12 13 16 17 18 19 24 26

#include<iostream>
using namespace std;

typedef struct BTNode
{
    int data;
    struct BTNode *lchild,*rchild;
}BTNode,*BTree;//二叉树节点

void Create_Tree(BTree *T)//先序创建二叉树,-1表示该树为空
{
    int cd;
    cin>>cd;
    if(-1==cd) *T=NULL;
    else 
    {
        (*T)=new BTNode;
        (*T)->data=cd;
        Create_Tree(&(*T)->lchild);
        Create_Tree(&(*T)->rchild);
    }
}

void LDR(BTree T)//中序遍历输出
{
    if(T)
    {
        LDR(T->lchild);
        cout<<T->data<<" ";
        LDR(T->rchild);
    }
}

void InsertBST(BTree *T,int key)//向二叉排序树中插入单个关键字key
{
    while((*T)!=NULL)
    {
        if((*T)->data>key)   T=&(*T)->lchild;
        else if((*T)->data<key) T=&(*T)->rchild;
    }

    (*T)=new BTNode;
    (*T)->lchild=NULL;
    (*T)->rchild=NULL;
    (*T)->data=key;
}

void Insert_LDR(BTree T1,BTree T2)//向二叉排序树T1中插入二叉排序树T2中的所有关键字key
{
    if(T2)
    {
        Insert_LDR(T1,T2->lchild);
        InsertBST(&T1,T2->data);
        Insert_LDR(T1,T2->rchild);
    }
}

int main()
{

    BTree T1,T2;
    Create_Tree(&T1);
    Create_Tree(&T2);
    Insert_LDR(T1,T2);

    LDR(T1);
    cout<<endl;

    return 0;
}

程序运行图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并二叉排序树 的相关文章

  • LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)

    目录 1038 从二叉搜索树到更大和树 题目描述 实现代码与解析 dfs 原理思路 1038 从二叉搜索树到更大和树 题目描述 给定一个二叉搜索树 root BST 请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和 提醒一
  • 算法题-简单系列-03-判断链表中是否有环

    文章目录 1 题目 1 1 思路1 双指针 1 2 思路2 哈希表 1 题目 判断给定的链表中是否有环 如果有环则返回true 否则返回false 1 1 思路1 双指针 我们使用两个指针 fast 与 slow 它们起始都位于链表的头部
  • 算法题-简单系列-05-两个链表的第一个公共结点

    文章目录 1 题目 1 1 思路1 循环遍历 1 题目 输入两个无环的单向链表 找出它们的第一个公共结点 如果没有公共节点则返回空 1 1 思路1 循环遍历 使用两个指针N1 N2 一个从链表1的头节点开始遍历 我们记为N1 一个从链表2的
  • 算法题-简单系列-06-删除有序链表中重复的元素

    文章目录 1 题目 1 1 循环遍历 1 题目 1 1 循环遍历 既然连续相同的元素只留下一个 我们留下哪一个最好呢 当然是遇到的第一个元素了 因为第一个元素直接就与前面的链表节点连接好了 前面就不用管了 只需要跳过后面重复的元素 连接第一
  • 【C语言】【数据结构】【手搓二叉树】用数组实现一个二叉树

    这里用数组 顺序表 实现一个二叉树 Heap h include
  • C语言,求取数组的序亏:已知一个整数数组,求出个数组中每个元素在整个 数组的排序。

    要求获取整数数组中每个元素的排序 可以使用以下方法 1 定义一个结构体数组 其中每个结构体包含数组元素的值和索引 2 遍历整数数组 将每个元素与其索引一起存储到结构体数组中 3 对结构体数组进行排序 按照元素的值进行升序排序 4 遍历排序后
  • c 关于数组几个查序程序

    1 查询某元素是否在数组中 int main void char i 10 2 1 7 2 10 5 2 0 1 4 10 10 1 3 1 0 8 char z 10 1 2 3 4 1 4 6 8 0 9 int zz 0 标志位 0
  • DS八大排序之冒泡排序和快速排序

    前言 前两期我们已经对 插入排序 直接插入排序和希尔排序 和 选择排序 直接选择排序和堆排序 进行了详细的介绍 这一期我们再来详细介绍一组排序 交换排序 即耳熟能详的冒泡排序和赫赫有名的快速排序 本期内容介绍 冒泡排序 快速排序 Hoare
  • 力扣每日一题:162. 寻找峰值(2023-12-18)

    力扣每日一题 题目 162 寻找峰值 日期 2023 12 18 用时 10 m 9 s 时间 0 ms 内存 40 54 MB 代码 class Solution public int findPeakElement int nums i
  • Redis 底层数据结构

    在 Redis数据结构和对象机制 中提到的图中 我们知道 可以通过 redisObject 对象的 type 和 encoding 属性 可以决定Redis 主要的底层数据结构 SDS QuickList ZipList HashTable
  • List去重-使用distinctByKey方法根据对象的属性进行去重

    description 使用distinctByKey方法根据对象的属性进行去重 author zs date 2023 12 18 14 29 param keyExtractor return java util function Pr
  • 【数据结构和算法】 K 和数对的最大数目

    其他系列文章导航 Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一 题目描述 二 题解 2 1 方法一 双指针排序 三 代码 3 1 方法一 双指针排序 3
  • LeetCode21. Merge Two Sorted Lists

    文章目录 一 题目 二 题解 一 题目 You are given the heads of two sorted linked lists list1 and list2 Merge the two lists into one sort
  • 面试150-13(Leetcode238除自身以外数组的乘积)

    代码 class Solution public int productExceptSelf int nums int n nums length int res new int n int product 1 int zerocnt 0
  • LeetCode21. Merge Two Sorted Lists

    文章目录 一 题目 二 题解 一 题目 You are given the heads of two sorted linked lists list1 and list2 Merge the two lists into one sort
  • 【每日一题】2397. 被列覆盖的最多行数-2024.1.4

    题目 2397 被列覆盖的最多行数 给你一个下标从 0 开始 大小为 m x n 的二进制矩阵 matrix 另给你一个整数 numSelect 表示你必须从 matrix 中选择的 不同 列的数量 如果一行中所有的 1 都被你选中的列所覆
  • 206.翻转链表

    翻转链表 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 备战技术面试 力扣提供海量技术面试资源 帮助你高效提升编程技能 轻松拿下世界 IT 名企 Dream Offer https leetcode cn problems re
  • 链表的中间节点

    链表的中间节点 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 备战技术面试 力扣提供海量技术面试资源 帮助你高效提升编程技能 轻松拿下世界 IT 名企 Dream Offer https leetcode cn problems
  • 单向不带头链表的使用

    单向不带头链表的使用 链表的创建 typedef struct LNode SLDataType data struct LNode next LNode LinkList 按位查找 LNode GetElem LinkList L int
  • 用栈实现队列(OJ中报错的处理)

    用栈实现队列 ERROR AddressSanitizer myQueueFree函数中栈的释放处现了问题 没有调用StackDestory而是直接free了 这个是栈初始化时 capacity与malloc申请的空间大小没有匹配 请你仅使

随机推荐

  • 机器学习——从0开始构建自己的GAN网络

    目录 一 前言 二 生成式对抗网络GAN 三 GAN的训练思路 四 数据集 Chinese MNIST 五 代码 python 1 文件展示 2 代码 一 数据预处理 3 代码 二 生成器的构建 4 代码 三 判别器的构建 5 代码 四 图
  • Python 模块手动制作发布压缩包_安装

    1 创建setup py from distutils core import setup setup name my msg version 1 0 description 发送信息和接受信息 long description hlx 完
  • 【CubeMX配置STM32驱动MPU6050】

    CubeMX配置STM32驱动MPU6050 包含DMP 并且在0 96寸OLED上显示 一 使用CubeMX进行相关配置 1 配置OLED的IIC接口 OLED的具体使用方法我就不细说了 我前面的文章里面有讲OLED的 如果有需要可以去看
  • Sql server 期末知识点复习

    数据库基础概念 提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 数据库复习知识 数据库基本概念 一 第一章概念知识复习 二 数据库创建 数据库及数据库对象 数据库基本概念 一 第一章概念知识复习 1 数据库 数据库 DB
  • 旋转的加载动画 css3,CSS3 Loaders

    css webkit keyframes rotate 0 webkit transform rotate 0deg transform rotate 0deg 50 webkit transform rotate 180deg trans
  • Java学习:使用MyBatis Plus的分页插件和QueryWrapper结合自定义mapper xml实现多表关联查询

    Vo 用来返回给前端展示列表的数据实体 Data public class CourseVo implements Serializable private static final long serialVersionUID 1L pri
  • 双目视觉原理(万字总结,包含Halcon代码)

    双目视觉原理 1 双目视觉的视差与深度 1 1 总览 2 视差原理 2 双目相机的坐标系 2 1 针孔相机的模型 2 2 四大坐标系 1 像素坐标系 单位 像素 pixel 2 图像坐标系 单位 mm 3 相机坐标系 单位 mm 4 世界坐
  • NUC980开源项目35-系统自动挂载驱动

    上面是我的微信和QQ群 欢迎新朋友的加入 在上一节的基础上 创建makefile和kconfig makefile LED Core obj CONFIG RUNLED runled o obj CONFIG CANLED canled o
  • 解决The valid characters are defined in RFC 7230 and RFC 3986

    解决方法 一 更换低版本的Tomcat 我选的方案 二 参考 https blog csdn net qq 32365919 article details 82055800
  • GD32F103,ADC采样端口对电压的影响问题,未解决!!!(已解决!!!)

    设计采集卡 使用了ADC1 ADC2 ADC3 发现ADC采样的通道电压不对 模拟量输入端未0V 输出采用LM358跟随 在ADC采集过程中 发现LM358的输出电压并不为0V 而是为0 2V 开始以为线路短路或是LM358的问题 后来停止
  • spring实战笔记

    Environment中获取配置 方式一 直接getProperties获取String bootstrapServers env getProperty hello kafka bootstrap servers 方式二 将属性直接绑定到
  • 二、Python基本语法

    二 基本语法 一 说明 二 内容 1 注释 2 变量 3 数据类型 4 列表和字典 5 输入和输出 6 字符串操作 7 运算符 8 条件语句 9 循环语句 10 函数 11 匿名函数 12 类和对象 13 模块和包 14 异常处理 15 文
  • Windows下配置cygwin/cmake

    对于那些低配置的电脑 要在windows做一些简单的coding work 安装一个VS实在有些转不开 所以我首先想到了通过cygwin cmake配置一个简单的开发环境 对于我那台老旧的IBM T43完全没问题 1 安装cygwin 首先
  • 新Android病毒出现 自动下载且无法卸载

    不久前XcodeGhost的事情令大家还未平复 现在又有针对Android平台的新病毒被曝光 国家计算机病毒应急处理中心监测发现 一种新的感染安卓手机的病毒a expense GhostPush a出现 该病毒可自动下载安装其他APP 而且
  • windows安装VMware虚拟机(附带CentOS7部署)

    软件下载 链接 https pan baidu com s 1Vw2Bilf9uf EYR6 MR86aA pwd d2qr 提取码 d2qr VMware安装 通你上述链接下载VMware安装包 没有特别选项 选安装位置无脑下一步安装 安
  • linux工具之sar

    sar System Activity Reporter 系统活动情况报告 是目前 Linux 上最为全面的系统性能分析工具之一 可以从多方面对系统的活动进行报告 包括 文件的读写情况 系统调用的使用情况 磁盘 I O CPU 效率 内存使
  • python写入文件的几种方式_python文本文件读写的3种方法

    第一种方法 file1 open test txt file2 open output txt w while True line file1 readline 这里可以进行逻辑处理 file2 write line s if not li
  • 华为硬件工程师社招机考题库_华为校招_硬件技术工程师机考试题及答案

    1 判断题 DRAM 上电时存储单元的内容是全 0 而 Flash 上电时存储单元的内容是全 1 4 分 A 正确 B 错误 FLASH 可保存 2 判断题 眼图可以用来分析高速信号的码间 干扰 抖动 噪声和衰减 4 分 A 正确 B 错误
  • VUE element-ui之table表格横向展示(表尾汇总)

    产品需求 在正常表格下方进行一系列汇总 如 合计等 分析之后发现需要拼接一个或多个横向排列的表格 实现步骤 模板部分
  • 合并二叉排序树

    描述 先序建立两棵二叉排序树 采用二叉链表结构存储 将这两棵二叉排序树合并成一棵新的二叉排序树 并按照中序序列输出合并后的二叉排序树 输入 输入两行先序遍历的整型数据 并以此分别建立两棵二叉排序树 其中整型数据必须为大于等于零的整数 如输入