二叉排序树有什么要求_二叉排序树是用来干什么的

二叉排序树有什么要求_二叉排序树是用来干什么的《计算之魂》思考题2.2——二叉排序树思考题2.2Q1. 修改中序遍历算法2.2,将它变成先序遍历或者后序遍历算法。Q2. (二叉排序树)有这样一串数字,5,2,8,0,10,7,18,20,30,12,15,1,将它们建成一颗二叉排序树。二叉排序树满足

《计算之魂》思考题2.2——二叉排序树
  思考题2.2

  Q1. 修改中序遍历算法2.2,将它变成先序遍历或者后序遍历算法。

  Q2. (二叉排序树)有这样一串数字,5,2,8,0,10,7,18,20,30,12,15,1,将它们建成一颗二叉排序树。二叉排序树满足下面的条件:

  (1)如果左子树不为空,则左子树上所有的节点的值均小于树的根节点的值。同样,如果右子树不为空,则右子树上所有节点的值均大于树的根节点的值。

  (2)左右子树本身也是二叉排序树。

  对于上述数字,我们在建立二叉排序树时,先把第一个数字5放在根节点,然后扫描第二个数字2,由于它比根节点的数字5小,因此我们将它放在左子树中。接下来我们扫描第三个数字8,由于它比根节点的数字5大,因此我们将它放在右子树中。重复上述过程,我们可以建成完整的二叉排序树。请完成下面三个小问题:

  i:写一个算法完成上述操作。

  ii:这个算法的复杂度是多少?

  iii:用何种遍历方法得到的结果恰好把上面的一串数字排好序?

  一、思考过程

  Q1容易实现,只要将遍历的优先级做一定的调整,便可以将中序遍历改为先序遍历和后序遍历。

  Q2依然可以利用递归的思想进行解答。

  (1)扫描第一个数字,作为根节点;

  (2)如果数据序列未扫描结束,则扫描下一个数据。该数字与根节点比较,若小于根节点,则与左子树比较,当左子树为空时,将数字插入到当前根节点左子树的位置;若大于根节点,则与右子树比较,当右子树为空时,将该数字插入到当前根节点右子树的位置。

  (3)反复执行步骤(2),直至序列中所有的数字遍历完毕。

  二、解题过程

  用下面的伪代码表示二叉树的数据结构。

  1、二叉树的前序遍历和后序遍历

  树的深度优先遍历(中序遍历)

  先序遍历

  后序遍历

  2、二叉排序树

  计算这个算法的时间复杂度。

  首先,我们要考虑遍历整个数据序列的时间复杂度。若序列长度为N,则时间复杂度为 O(N)

  接下来,我们要思考构建二叉排序树的时间复杂度。这本质上是一个排序的问题。最差的情况,原序列是完全有序的,则构造出的二叉树深度与序列长度相等;最好的情况则是可以构造出一个平衡二叉树,则二叉树的高度为 logN (以2为底)。

  所以,此算法的时间复杂度在 O(N^2)O(NlogN) 之间。

  这样构筑的二叉树,对其进行中序遍历,可以将已知的一串数字进行排序。

  因本人的能力有限,分析和解答难免有错误和疏漏的地方,欢迎各位学友批评指正~

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/96955.html

(0)
上一篇 2024年 5月 21日 下午11:28
下一篇 2024年 5月 21日 下午11:42

相关推荐

  • win10怎么进行系统修复_win10怎么自动修复系统

    win10怎么进行系统修复_win10怎么自动修复系统win10系统如何手动修复引导 win10系统手动修复引导方法介绍电脑启动的时候会读取硬盘第一分区内的引导信息,之后根据引导信息启动系统,系统引导我们是不能够随时进行修改变动的,一旦系统引导故障就会导致系统无法正常启动,最近有位win10系统用户使用电脑的时候想要手

    2024年 5月 16日
  • Ubuntu安装教程u盘_u盘windows10安装教程

    Ubuntu安装教程u盘_u盘windows10安装教程U盘安装系统实用全面教程(单系统(windows10,windows7,ubuntu),双系统(ubuntu+windows))综述学会U盘安装操作系统是一件可以极大提升自己的一件事情。除硬件以外的问题都可以通过重装系统进行解决。U盘安装操作系统,有这一篇就够啦!这篇文章主要讲如下内容:1

    2024年 5月 12日
  • DataSpell激活2024.1.1(SolidWorks 2024 SP1激活成功教程版+安装教程)

    DataSpell激活2024.1.1(SolidWorks 2024 SP1激活成功教程版+安装教程)

    2024年 6月 6日
  • 函数已经有了一个主体怎么求最大值的公式_函数已经有了一个主体怎么求最大值的公式是什么

    函数已经有了一个主体怎么求最大值的公式_函数已经有了一个主体怎么求最大值的公式是什么这是我目前见过最硬核的函数合集,让我的工作更省心!嗨,大家好!我是明镜在心,很高兴又一次与大家分享 Excel 函数相关知识!记得上学的时候,每次考试过后,学校都要统计这次考试的最高分和最低分分别是多少。在 90 年代计算机和办公软件并不普及的时候,只能人工手动统计最高分和最低分。但随

    2024年 5月 20日
  • html设置滚动条可以滚动图片吗怎么弄_html设置滚动条可以滚动图片吗怎么弄的

    html设置滚动条可以滚动图片吗怎么弄_html设置滚动条可以滚动图片吗怎么弄的html滚动条样式如何设置设置html滚动条样式的方法:首先新建文档,再新建css文件;然后创建div标签并填充内容,并设定滚动条内框的大小,代码为【overflow-y: scroll;overflow-x: scroll;】。本教程操作环境:wi

    2024年 5月 25日
  • 二阶低通滤波器q值_二阶低通滤波器q值与带宽

    二阶低通滤波器q值_二阶低通滤波器q值与带宽离散时域滤波器的实现(四)有限字长表示与误差分析当鲜花凋零遍地,是否有新的种子在萌芽?一、回顾上节总结了FIR系统的结构设计。Michael Lieman:离散时域滤波器的实现(三)FIR系统的实现自此,理论原理已经了解完

    激活谷笔记 2024年 5月 20日
  • C语言实现个人财务管理软件

    C语言实现个人财务管理软件这篇文章主要为大家详细介绍了C语言实现个人财务管理软件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    2024年 3月 19日
  • ubuntu和linux一样吗_Ubuntu系统和Linux系统

    ubuntu和linux一样吗_Ubuntu系统和Linux系统【Linux操作系统】Linux和Ubuntu是什么关系?两者有区别吗?Linux和Ubuntu是什么关系?两者有区别吗?对于不了解Linux的朋友来说,可能会说“我使用的是Linux操作系统”。其实Linux这个词本身指标是Linux内核。一般说的Linux系统其实是基于Linux

    2024年 5月 14日
  • cin3是什么意思图片

    cin3是什么意思图片CIN3是原位癌吗?CIN3是什么意思?我们发生病变的这个细胞,整个宫颈上皮完全都占据了,以前有一种说法,CIN3也把它叫做宫颈的原位癌,但现在叫做宫颈上皮内瘤样病变是三级,事实上这是一码事。出现这种情况的病人,第①步要做锥切,重度癌前病变或者是原位癌的要切掉,但更重要的意义是

    激活谷笔记 2024年 5月 18日
  • pycharm怎么读_sklearn怎么发音python

    pycharm怎么读_sklearn怎么发音python在pycharm中按装sklearn库在PyCharm中正确导入scikit-learn(sklearn)需要执行以下步骤:1. 确保已经安装了scikit-learn库。你可以在终端或命令提示符中运行以下命令来安装它:“`

    激活谷笔记 2024年 5月 17日
  • sql窗口函数执行顺序_sql窗口函数执行顺序是什么

    sql窗口函数执行顺序_sql窗口函数执行顺序是什么sql窗口函数执行顺序窗口[函数](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJh

    激活谷笔记 2024年 5月 31日
  • 分区表损坏怎么修复不能开机启动_分区表损坏怎么修复不能开机启动盘

    分区表损坏怎么修复不能开机启动_分区表损坏怎么修复不能开机启动盘服务器的12种基本故障+排查方法加电类故障定义举例从上电(或复位)到自检完成这一段过程中电脑所发生的故障。可能的故障现象1、 主机不能加电(如:电源风扇不转或转一下即停等)、有时不能加电、开机掉闸、机箱金属部分带电等;2、 开机无显,开机报警;3、 自检报错或死机、自检过程中所显示的配置与

    2024年 5月 24日
关注微信