当前位置: 首页 > news >正文

排序二叉树(c++)

排序二叉树是一棵有顺序,且没有重复元素的二叉树。

对每个节点而言:

如果左子树不为空,则左子树上的所有节点的权值都小于该节点的权值。
如果右子树不为空,则右子树上的所有节点的权值都大于该节点的权值。

上图为一棵排序二叉树。相信你已经发现,将排序二叉树上的节点的权值按照中序遍历顺序排列成的序列,一定是严格单调递增的。

下面我们来讲一下如何构造一棵排序二叉树,我们主要运用 DFS 的方法。

算法思想:

假定我们要将数值 X 插入二叉树中。

  1. 判断当前节点是否为空节点,若为空,则将 X 插入到该节点处。
  2. 若不为空,比较当前节点的权值与 X 的大小。
  3. X 小于当前节点的值,进入当前节点的左子树。
  4. X 大于当前节点的值,进入当前节点的右子树。
  5. 重复 1,2,3,4 步。
#include<bits/stdc++.h>
using namespace std;int tree[1010], pos[1010];
void dfs(int &root, int x) {if(tree[root] == -1){tree[root] = x;return ;}if (x < tree[root]){root *= 2;;dfs(root, x);} else if (x > tree[root]){root *= 2;root++;dfs(root, x);}
}
int main() {int n;cin >> n;memset(tree, -1, sizeof(tree));for (int i = 1; i <= n; i++) {int x;cin >> x;pos[i] = 1;dfs(pos[i], x);}for (int i = 1; i <= n; i++) {cout << tree[pos[i]] << ' ' << tree[pos[i] * 2] << ' ' << tree[pos[i] * 2 + 1] << endl;}return 0;
}

  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Go基础编程 - 12 -流程控制
  • DPKG(Debian / Ubuntu包管理工具)的深入探索与使用
  • 【人工智能】机器学习 -- 决策树(乳腺肿瘤数)
  • java面试题,有synchronized锁,threadlocal、数据可以设置默认值、把redis中的json转为对象
  • 使用内网穿透工具 frp 发布内网 web 站点
  • WebGoC题解(13) 狐猬编程:GoC L4 结业测试 第4题 找木柴
  • 自动驾驶---视觉Transformer的应用
  • 工具(linux)
  • 判断用户输入IP的合法性判断输入IP与本机IP是否在同一网段C++QT
  • 【中项】系统集成项目管理工程师-第4章 信息系统架构-4.3应用架构
  • (7) cmake 编译C++程序(二)
  • PyTorch 深度学习实践-循环神经网络(高级篇)
  • React--Redux
  • 多维时序 | Transformer+BiLSTM多变量时间序列预测(Python)
  • HAL库源码移植与使用之RTC时钟
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • bootstrap创建登录注册页面
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • JavaScript服务器推送技术之 WebSocket
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Vue官网教程学习过程中值得记录的一些事情
  • 程序员最讨厌的9句话,你可有补充?
  • 从零开始的无人驾驶 1
  • 分布式任务队列Celery
  • 计算机在识别图像时“看到”了什么?
  • 经典排序算法及其 Java 实现
  • 开源SQL-on-Hadoop系统一览
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 数据结构java版之冒泡排序及优化
  • 说说动画卡顿的解决方案
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信支付JSAPI,实测!终极方案
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​2020 年大前端技术趋势解读
  • #AngularJS#$sce.trustAsResourceUrl
  • #if #elif #endif
  • (day18) leetcode 204.计数质数
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (汇总)os模块以及shutil模块对文件的操作
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)c52学习之旅-流水LED灯
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)树状数组
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ./和../以及/和~之间的区别
  • .net CHARTING图表控件下载地址
  • .Net Core 笔试1