10.30二叉树一些性质,找公共祖先(一般与搜索树),操作的复杂度,选择题细节

课上

 

一些结论,性质

n0,n1,n2指的是子结点的数量,n0没有子节点,叶子结点

n=2*n2+n1+1,若n1为奇数,则n为偶数,不然,则为奇数

满二叉树

没有度为1的结点,即每个结点要么没有孩子结点,要么就有两个孩子结点

没有孩子结点的结点一定是叶子结点

回顾 

寻找二叉搜索树最近公共祖先

思路是找到从根节点到两个结点的路径,由于是一个树,所以最开始的路径是一定一样的,即在同一颗树上至少具有相同的根节点,然后一直往下走,走到最后一个分岔口,开始分叉,即路径中最后一个相同的结点时,就是最近公共祖先

始终保持最近的相同结点,可以在退出时直接返回最后一个相同的结点,即最近公共祖先

找根节点到目标结点的路径,是从根节点开始

每次迭代中,先入当前结点,再更新,最后迭代结束,加入目标值

寻找二叉树的公共祖先

思路还是找路径,然后返回最后一个相同的结点

但由于不是搜索树,不满足左子树比根节点小,右子树比根节点大的性质,所以找路径的方法不同

采用dfs方式找路径,如果已经找到了,或者是叶子结点尝试继续向下,则直接返回

不然就是还没找到,先把当前的结点入列,然后判断是不是目标值,如果是就打上标记并直接返回

不然,继续递归向下

遍历两个孩子,看flag,如果在左子树里找到了,flag就会为1,那么在右子树中就不会继续递归,不然继续

最后都遍历完后,可能找到了,也可能没找到,找到了就直接返回,不操作,不然就说明当下的子树里没有,应该回溯

二叉树性质,复杂度

对于二叉树,我们维护一个堆,插入和依次获取元素的时间复杂度皆为O(logn)

插入

将元素插入最后一位,再进行向上冒泡,即如果父节点的值小于被插入的元素,父节点下移,被插入的元素上移。时间复杂度取决于树的高度h。而完全二叉树的树的高度为[logn+1]的上取整,所示时间复杂度为O(logn)。

n是插入前的树的结点数,插入完后n++

选择题

 

 

插入排序需要不断移动左序列,即遍历到的位置之前是有序的,后面是无序的,只有到最后才完全有序;选择排序是每次选一个最大的交换到序列的相应尾端位置;冒泡排序也是这个思路,只不过选择排序是选后交换,每次只用一次,但冒泡排序选和交换同时进行,每次至少需要一次

快速排序在有序时最慢为n^2,原因

标记,一些与……无关的排序

元素的移动次数与关键字的初始排列次序无关的是:基数排序

元素的比较次数与初始序列无关是:选择排序

算法的时间复杂度与初始序列无关的是:选择排序

最坏的情况和最好的情况恰好相反,在指定好比较的方向下

如果是从左到右,每次都和有序的第一个(当前的最小)比较,那么逆序是最好,顺序是最坏

这时插入的判断条件是找到左边为空或比左边大,右边为空或比右边小的位置

如果是从右到左,每次都和有序的最后一个(当前的最大)比较,那么逆序是最坏,顺序是最好

因为逆序时,每次接下来的牌都是当前的最小,顺序时,每次的牌都是当前的最大

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VC++程序崩溃时,使用Visual Studio静态分析dump文件

Window环境下的C程序如果发生异常崩溃,首先会和客户联系,让帮忙取特定目录下的dump文件和log文件来分析崩溃的原因。不过发生崩溃的话,从log一般分析不出特定原因,这时候dump文件就起作用了。可以通过Visual Studio和Windbg来静态…

2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 C题 影视评价与定制 原题再现 中华人民共和国成立以来,特别是政治改革和经济开放后,随着国家经济的增长、科技的发展和人民生活水平的提高,中国广播电视媒体取得了显著的成就,并得到了迅速的发展…

工业相机常见的工作模式、触发方式

参考:机器视觉——工业相机的触发应用(1) - 知乎 工业相机常见的工作模式一般分为: 触发模式连续模式同步模式授时同步模式 触发模式:相机收到外部的触发命令后,开始按照约定时长进行曝光,曝光结束后输出一帧图像。…

Android 快速实现隐私协议跳转链接

首先在string.xml创建对应字串 <string name"link">我已仔细阅读并同意<annotation value"privacy_policy">《隐私政策》</annotation>和<annotation value"service_agreement">《服务协议》</annotation></st…

c++-二叉树进阶

文章目录 前言一、二叉搜索树1、二叉搜索树介绍2、二叉搜索树循环实现3、二叉搜索树递归实现4、二叉搜索树的性能分析5、二叉搜索树的应用6、二叉树练习题6.1 根据二叉树创建字符串6.2 二叉树的层序遍历6.3 二叉树的层序遍历 II6.4 二叉树的最近公共祖先6.5 二叉搜索树与双向链…

Java SE 学习笔记(十八)—— 注解、动态代理

目录 1 注解1.1 注解概述1.2 自定义注解1.3 元注解1.4 注解解析1.5 注解应用于 junit 框架 2 动态代理2.1 问题引入2.2 动态代理实现 1 注解 1.1 注解概述 Java 注解&#xff08;Annotation&#xff09;又称Java标注&#xff0c;是JDK 5.0引入的一种注释机制&#xff0c;Java语…

二叉排序树c语言版

1、定义二叉树数据域、二叉树结点 /*** 二叉树节点数据 */ typedef struct treenodedata {int sort;char* name;} TreeNodeData;/**** 二叉树节点定义 */ typedef struct binarytree {/*** 结点数据域*/TreeNodeData* data;/**左子树*/struct binarytree* leftChild;/**左子树…

【C语言】指针那些事(上)

C语言系列 文章目录 文章目录 一. 字符指针 一.&#xff08;1 &#xff09; 数组创建空间的地址和指针指向的地址 二. 指针数组 二.&#xff08;1&#xff09;指针数组模拟一个二维数组 ​ 三. 数组指针 三.(1)数组指针到底有什么用 对一维数组没有什么用 二.(…

半导体产线应用Power Link 转EtherCAT协议网关数字化转型

随着数字化转型的推进&#xff0c;越来越多的企业开始意识到数字化转型的重要性&#xff0c;并将其作为发展战略的关键之一。半导体产线作为一个高度自动化的生产系统&#xff0c;自然也需要数字化转型来提高效率、降低成本和提高质量。Power Link 转EtherCAT协议网关是半导体产…

大数据之LibrA数据库系统告警处理(ALM-12002 HA资源异常)

告警解释 HA软件周期性检测Manager的WebService浮动IP地址和数据库。当HA软件检测到浮动IP地址或数据库异常时&#xff0c;产生该告警。 当HA检测到浮动IP地址或数据库正常后&#xff0c;告警恢复。 告警属性 告警参数 对系统的影响 如果Manager的WebService浮动IP地址异常…

高效分割分段视频:提升您的视频剪辑能力

在数字媒体时代&#xff0c;视频剪辑已经成为一项重要的技能。无论是制作个人影片、广告还是其他类型的视频内容&#xff0c;掌握高效的视频剪辑技巧都是必不可少的。本文将介绍如何引用云炫AI智剪高效地分割和分段视频&#xff0c;以提升您的视频剪辑能力。以下是详细的操作步…

时序预测 | Matlab实现ARIMA-LSTM差分自回归移动差分自回归移动平均模型模型结合长短期记忆神经网络时间序列预测

时序预测 | Matlab实现ARIMA-LSTM差分自回归移动差分自回归移动平均模型模型结合长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现ARIMA-LSTM差分自回归移动差分自回归移动平均模型模型结合长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果…

【设计模式】第19节:行为型模式之“中介模式”

一、简介 中介模式定义了一个单独的&#xff08;中介&#xff09;对象&#xff0c;来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互&#xff0c;来避免对象之间的直接交互。 中介模式的设计思想跟中间层很像&#xff0c;通过引入中介这个中间层&#xf…

【Java】LinkedList 集合

LinkedList集合特点 LinkedList 底层基于双向链表实现增删 效率非常高&#xff0c;查询效率非常低。 LinkedList源码解读分析 LinkedList 是双向链表实现的 ListLinkedList 是非线程安全的&#xff08;线程是不安全的&#xff09;LinkedList 元素允许为null,允许重复元素Linked…

NewStarCTF2023week4-midsql(利用二分查找实现时间盲注攻击)

大致测试一下&#xff0c;发现空格被过滤了 使用内联注释/**/绕过&#xff0c;可行 1/**/-- 使用%a0替代空格&#xff0c;也可以 1%a0-- 再次测试发现等号也被过滤&#xff0c;我们使用 like 代替 &#xff08;我最开始以为是and被过滤&#xff0c;并没有&#xff0c;如果是…

大数据之LibrA数据库系统告警处理(ALM-12001 审计日志转储失败)

告警解释 根据本地历史数据备份策略&#xff0c;集群的审计日志需要转储到第三方服务器上。如果转储服务器满足配置条件&#xff0c;审计日志可以成功转储。审计日志转储失败&#xff0c;系统产生此告警。如果第三方服务器的转储目录磁盘空间不足&#xff0c;或者用户修改了转…

力扣第968题 监控二叉树 c++ hard题 二叉树的后序遍历 + 模拟 + 贪心

题目 968. 监控二叉树 困难 相关标签 树 深度优先搜索 动态规划 二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; …

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

一些看起来不太聪明的机器到底是用来干什么的&#xff1f; 用来解决一些不太聪明的基础设施。 想必大家都见过一些奇葩反人类的——设计&#xff0c;举例如下&#xff1a; 当我们一边对着这些图片狂笑时…… 有没有想过“报应”有一天会落在自己身上呢&#xff1f; 这天我们遇到…

Android开发知识学习——HTTP基础

文章目录 学习资源来自&#xff1a;扔物线HTTPHTTP到底是什么HTTP的工作方式URL ->HTTP报文List itemHTTP的工作方式请求报文格式&#xff1a;Request响应报文格式&#xff1a;ResponseHTTP的请求方法状态码 HeaderHostContent-TypeContent-LengthTransfer: chunked (分块传…

IDEA 如何运行 SpringBoot 项目

步骤一&#xff1a;配置 Maven 第一步&#xff1a;用 IDEA 打开项目&#xff0c;准备配置 maven 环境 &#xff0c;当然如果本地没有提前配置好 maven&#xff0c;就用 IDEA 默认的配置即可 配置 maven 步骤 情况 1&#xff1a;如果本地没有配置过 maven&#xff0c;可以保持如…