算法(递归)黑盒思想

递归vs搜索vs回溯
递归的时候其实就是在搜索,递归返回的时候其实就是在回溯
常见的二叉树的题目基本都用到了递归:
求二叉树节点个数(后序遍历)

int BinaryTreeSize(BTNode* root)
{
	return root == NULL ? 0 : BinaryTreeSize(root->left) + BinaryTreeSize(root->right) + 1;

求二叉树叶子节点的个数

int BinaryTreeLeafSize(BTNode* root)
{
	if (root == NULL)
	{
		return 0;
	}
	if (root->left == NULL && root->right == NULL)
	{
		return 1;
	} 
	return  BinaryTreeLeafSize(root->left) + BinaryTreeLeafSize(root->right);
}

求二叉树第k层的节点数

int BinaryTreeLevelKSize(BTNode* root, int k)
{
	assert(k > 0);
	if (root == NULL)
	{
		return 0;
	}
	
	if (k == 1)
	{
		
		return 1;
	}
	return  BinaryTreeLevelKSize(root->left, k - 1) + BinaryTreeLevelKSize(root->right, k - 1);
}

单值二叉树的判断

bool isUnivalTree(struct TreeNode* root){
    if(root==NULL)
    {
        return true;
    }
    if(root->left&&root->left->val!=root->val)
    {
        return false;
    }
    if(root->right&&root->right->val!=root->val)
    {
        return false;
    }
       return  isUnivalTree(root->left)&&isUnivalTree(root->right);
}

经典递归算法:
找出重复子问题,相信这个递归函数一定能完成这个重复的子问题

在这里插入图片描述

汉诺塔问题 ——找出重复子问题

合并两个有序链表 ——删除某个子节点,任然可以完成递归(黑盒任务)
反转链表——递归回溯时,实现子问题函数体
两两交换链表节点——每次递归深度root->next->next

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

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

相关文章

【学习】DLA (Deep Layer Aggregation)

本研究是有由UC Berkeley的Trevor Darrell组发表于2018年CVPR。因为,工作中应用到CenterNet,文章中使用了DLA作为backbone,能够以较高的速度完成推理并维持较高的AP。 DLA文章:论文 DLA 在实际操作中,常常将高级特征…

Orange3数据预处理(转换器组件)

该组件接收数据,然后重新应用之前在模板数据上执行的转换。 这些转换包括选择变量的子集以及从数据中出现的其他变量计算新的变量, 例如,离散化、特征构建、主成分分析(PCA)等。 在Orange3中,描述的这个组件…

浏览器与Node.js事件循环:异同点及工作原理

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同,Linux严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如,Win7 系统桌面上有文件夹叫做Test,当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…

架构学习总结:企业架构=业务+数据+技术+应用架构

最近再次研读DAMA数据管理知识体系,结合工作对什么是企业架构?如何开展企业架构设计工作有一些新的认识,供大家参考。企业架构包括企业的业务架构、数据架构、技术架构和应用架构,要想做好企业的信息化数字化建设规划,这四个架构都不可缺少,这四个方面的内容共同组成了企…

【C语言】字符指针

在指针的类型中我们知道有一种指针类型为字符指针char* 一般使用: int main() { char ch w; char *pc &ch; *pc w; return 0; } 还有一种使用方式,如下: int main() { const char* pstr "hello bit.";//这⾥是把⼀个字…

dubbo 总结

1.dubbon 基本使用 2.dubbon 的高级特性 这个也不算啥高级特性,图形用户界面最没水平 负载均衡 负载均衡 Random 随机访问 RoundRoubin 轮询按权重 LeastOne 根据活跃度调用

华为OD机试C卷“拉满货的卡车”Java编程解答

描述 示例 算法思路1 答案1 import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int wa scanner.nextInt();int wb scanner.nextInt();int wt scanner.nextInt();int pa scanner.nextInt();int pb …

mysql的安装启动

下载 2.解压后放在某个目录下: 3.修改系统变量 4.修改配置文件 (创建一个ini文件放在解压后的目录下) 内容如下 5.初始化mysql 1.用管理员模式下输入: mysqld --initialize --console C:\WINDOWS\system32>mysqld --initia…

Qt 拖动事件

文章目录 1 自定义控件 TextEdit2 实现打开文件功能3 实现鼠标滚轮放大字体 QEvent::DragEnter 当拖动文件进入到窗口/控件中时,触发该事件,它对应的子类是QDragEnterEvent QEvent::DragLeave 当拖动文件离开窗口/控件时,触发该事件&#xff…

复盘-word

word-大学生网络创业交流会 设置段落,段后行距才有分 word-选中左边几行字进行操作 按住alt键进行选中 word复制excel随excel改变(选择性粘贴) 页边距为普通页边距定义 ##### word 在内容控件里面填文字(调属性&#xff09…

【人工智能】本地搭建AI模型Gemma

文章目录 前言一、安装条件二、安装ollama优化存储路径(不用优化也行)ollama命令详解:模型命令详解: 三、安装WebUiwindows安装不了docker解决测试 前言 最近看到google的gemma模型很火,因为模型较小对于但功能强大,大模型虽然很…

自动驾驶技术解析与关键步骤

目录 前言1 自动驾驶主要技术流程1.1 车辆周围环境感知1.2 车辆和行人检测分析1.3 运动轨迹规划 2 关键技术概述2.1 车辆探测与图片输入2.2 行人检测2.3 运动规划2.4 电子地图2.5 轨迹预测2.6 交通灯分析2.7 故障检测 结语 前言 自动驾驶汽车作为未来交通领域的重要发展方向&a…

线性表试题(三)——链表表示

一、单项选择题 01.关于线性表的顺序存储结构和链式存储结构的描述中,正确的是( )。 Ⅰ.线性表的顺序存储结构优于其链式存储结构 Ⅱ.链式存储结构比顺序存储结构能更方便地表示各种逻辑结构 Ⅲ.若频繁使用插入和删除结点操作,则顺…

主升浪趋势票如何去做,看完这2个例子就可以终结了

我们在这个市场是否能持续赚钱不被淘汰取决于我们自身迭代速度,向市场学习本身就是向市场资金共识方向靠拢,接近客观,远离个人偏见的主观。看清这一点,你才有可能性,否则连可能性都不会有。 在上述问题中,虽…

移动端uni-app小程序搜索高亮前端处理,同时可设置相关样式,兼顾性能

在uni-app中我们会遇到搜索高亮显示的需求 如下图: 起初用的是富文本实现 使用replaceAll方法取代搜索字段为一个 标签并设置相应的样式,但是小程序的并没有把 标签渲染出来,所以放弃了,下面原代码: /* 搜索字体变色…

好书推荐丨保姆级Midjourney教程,这本写给大家看的设计书闭眼入!

文章目录 写在前面好书推荐Part.1Part.2Part.3 粉丝福利写在后面 写在前面 在AI绘画界,有每日经典一问:“你今天用Midjourney画了啥?”晒作品成为重头戏。 小红书上关于Midjourney出的图片点赞数惊人。 reddit上的恶搞幽默图片热度居高不下…

【个人开发】llama2部署实践(二)——基于GPU部署踩坑

折腾了一整天,踩了GPU加速的一堆坑,记录一下。 1.GPU加速方式 上篇已经写了llama2部署的大概流程:【【个人开发】llama2部署实践(一)】——基于CPU部署 针对llama.cpp文件内容,仅需再make的时候带上参数…

STM32之串口中断接收UART_Start_Receive_IT

网上搜索了好多,都是说主函数增加UART_Receive_IT()函数来着,实际正确的是UART_Start_Receive_IT()函数。 —————————————————— 参考时间:2024年3月9日 Cube版本:STM32CubeMX 6.8.1版本 参考芯片&#xff1a…

【蓝牙协议栈】【经典蓝牙】【BLE蓝牙】蓝牙技术特点

目录 1. 蓝牙技术特点 2. 经典蓝牙与BLE蓝牙对比 2.1 BT/BLE技术区分 2.2 支持的profile不同 2.3 核心架构,不同的controler 3. Bluetooth的系统构成 4. 蓝牙协议规范 4.1 传输协议 4.2 中介协议 4.3 应用协议 5. 蓝牙硬件接口 1. 蓝牙技术特点 简单地说…