二叉树刷题学习笔记2

LeetCode刷题攻略 应届生面试算法就考个数组 链表 二叉树 矩阵 数组变着法子考你排序 查询 指针 位运算 链表变着法子考你指针 最多再考个哈希 二叉树变着法子考用递归和栈前中后遍历 最多加上回溯 矩阵的话就是知道起点的路径查询和不知道起点的路径查询 掌握了这些 面大厂就比较轻松了 其实和学历技术关系也不大 大部分人先死到想都不敢想上了。 据了解,LeetCode 是一个非常棒的 OJ(Online Judge)平台,收集了许多公司的面试题目。相对其他 OJ 平台而言,有着下面的几个优点: 题目全部来自业内大公司的真. 阅读详情

上一篇:二叉树刷题学习笔记1——框架
十大经典排序算法:快速排序和归并排序

二叉树的重要性

  • 上一篇章有说到二叉树刷题的两个思路:遍历和分解,而这两个思路,其实就是回溯算法和动态规划的思想。这次我们换一种说法:学过数据结构都知道快速排序和归并排序两种经典的排序算法,实际上,这两种排序的实现思想和框架和二叉树的思想框架大同小异:十大经典排序算法:快速排序和归并排序
  • 快速排序框架
void sort(int[] nums, int lo, int hi) {
    /****** 前序遍历位置 ******/
    // 通过交换元素构建分界点 p
    int p = partition(nums, lo, hi);
    /************************/

    sort(nums, lo, p - 1);
    sort(nums, p + 1, hi);
}

  • 归并排序框架
// 定义:排序 nums[lo..hi]
void sort(int[] nums, int lo, int hi) {
    int mid = (lo + hi) / 2;
    // 排序 nums[lo..mid]
    sort(nums, lo, mid);
    // 排序 nums[mid+1..hi]
    sort(nums, mid + 1, hi);

    /****** 后序位置 ******/
    // 合并 nums[lo..mid] 和 nums[mid+1..hi]
    merge(nums, lo, mid, hi);
    /*********************/
}

  • 可以看到两个排序算法无非就是利用了之前说到的前序位置和后序位置两个位置而已。
  • 其实说这么多,也是希望大家能够深入理解这个二叉树刷题的知识点。接下来我们直接看例题。

例题

力扣226:翻转二叉树

package package2021_11;

public class Main {
	public static void main(String[] args) {
		TreeNode val_1=new TreeNode(1);
		TreeNode val_3=new TreeNode(3);
		TreeNode val_6=new TreeNode(6);
		TreeNode val_9=new TreeNode(9);
		TreeNode val_left=new TreeNode(2,val_1,val_3);
		TreeNode val_right=new TreeNode(7,val_6,val_9);
		TreeNode root=new TreeNode(4,val_left,val_right);
		TreeNode t=invertTree(root);
		print(t);
	}
	
	public static TreeNode invertTree(TreeNode root) {
		if(root==null)
			return null;
		//叶子节点
		if(root.left==null&&root.right==null)
			return root;
		TreeNode leftroot=invertTree(root.left);
		TreeNode rightroot=invertTree(root.right);
		
		TreeNode left=leftroot;
		TreeNode right=rightroot;
		root.left=right;
		root.right=left;
		return root;
    }
	
	//二叉树打印
	public static void print(TreeNode root) {
		if(root==null)
			return;
		System.out.print(root.val+" ");
		print_tree(root);
	}
	
	public static void print_tree(TreeNode root) {
		if(root==null)
			return;
		if(root.left!=null)
			System.out.print(root.left.val+" ");
		if(root.right!=null)
			System.out.print(root.right.val+" ");
		print_tree(root.left);
		print_tree(root.right);
	}
}
//二叉树类
class TreeNode {
	int val;
	TreeNode left;
	TreeNode right;

	TreeNode() {
	}

	TreeNode(int val) {
		this.val = val;
	}

	TreeNode(int val, TreeNode left, TreeNode right) {
		this.val = val;
		this.left = left;
		this.right = right;
	}
}

结果:
在这里插入图片描述

力扣114:二叉树展开为链表

class Solution {
    public static void flatten(TreeNode root) {
		List<TreeNode> list=new ArrayList<TreeNode>();
		if(root==null) {
			System.out.println(list);
			return;
		}
		solution(root,list);
		TreeNode result=list.get(0);
		TreeNode temp=result;
		
		for (int i = 1; i < list.size(); i++) {
			temp.left=null;
			temp.right=list.get(i);
			temp=temp.right;
		}
    }
	public static void solution(TreeNode root,List<TreeNode> list) {
		if(root==null) {
			return;
		}
		list.add(root);
		solution(root.left,list);
		solution(root.right,list);
	}
}

结果
在这里插入图片描述

两个月搞定面试算法【小白leetcode刷题训练】【python专场】 前言 刷题顺序来自极客时间,共分为8个专题,每周1个,两个月认真刷完基本大厂面试OK(我说的是认真刷!只抄题解不算)。截止到博主结束秋招时只刷到第5个专题,也基本够用了。也就是说认真刷题的话一个月就可以有offer入手了。 当然现在BAT的笔试做起来还是觉得费力,笔试是真的难啊! 博主是python选手,题解都是python写的。有问题欢迎交流,共同进步。 文章内附leetcode链接,直接点链接去做就行。同类型的尽量整理到一起了,也方便自己今后复习。 推荐五遍刷题法 1、读题+思考,10分钟内没思路,直接 阅读详情

相关推荐

LeetCode Hot100 刷题笔记(4)—— 二叉树、图论

一、二叉树:二叉树的中序遍历,二叉树的最大深度,翻转二叉树,对称二叉树,二叉树的直径,二叉树的层序遍历,将有序数组转换为二叉搜索树,验证二叉搜索树,二叉搜索树中第 K 小的元素,二叉树的右视图,二叉树展开为链表,从前序与中序遍历序列构造二叉树,路径总和 III,二叉树的最近公共祖先,二叉树中的最大路径和。 二、图论:岛屿数量,腐烂的橘子,课程表,实现 Trie (前缀树)。

qq_51175703的博客 1594

LeetCode 刷题顺序,按标签分类,科学刷题!

https://zhuanlan.zhihu.com/p/501483324很多初学算法的同学,对着LeetCode从头开刷,结果磕磕碰碰没几个AC。挫败感上来就刷不动了,其实掌握科学刷题顺序能让你事半功倍!今天就来总结下正确的刷题顺序,大家跟着刷就行!在刷题之前,如果时间充足,一定要先了解一道算法题考察的知识点,同一个知识点可以触类旁通,强化联系。下面把Leetcode上的题目按结构化标签分类,供你参考。一定要按照按照题目类别结构化地刷题 !!!这样刷题的速度不仅更快,而且可以在刷完一类题之后进行总结。对

yygr的博客 2万+

代码随想录刷题|一刷总结

成果汇报经验总结为什么要刷题未来计划以及附件资源,里面有所有pdf,需要自取。我会在末尾放上pdf,点击思维导图的右上角的【箭头】可以直接跳转到leetcode,提供一键跳转方便复习。

东东唯一指定铲屎官 7222

Leetcode刷题修炼手册

我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~ “跟着...

Machine Learning with Tutors 5万+

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读)

本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。

weixin_29215815的博客 597

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,从DH参数输入到3D可视化全流程解析。通过正运动学验证、逆运动学求解和交互控制等实战技巧,帮助工程师快速掌握机械臂建模核心方法,并提供完整代码示例解决常见问题。

weixin_27372101的博客 395

算法题到底该怎么刷?高效刷题方法

算法题到底该怎么刷?高效刷题方法

weixin_41171614的博客 4106

窥秘Windows 10:SAM密码破解

Windows 10作为广受欢迎的操作系统,拥有一套强大的安全措施来保护用户账号和数据安全。然而,有时候我们需要了解更多关于密码破解的知识,以加强我们的防护措施。本文将深入探讨如何突破Windows 10的SAM密码,以便更好地了解密码安全性并加强系统的保护。

Sgirll的博客 6845

算法刷题路线总结与相关资料分享

算法刷题路线总结,算法题刷题步骤介绍,数据结构与算法相关资料分享~

小新要变强的博客 8491

离线AI实战指南:本地部署大模型处理PDF/Word/Excel

离线AI是指在无网络、不上传数据前提下,于个人设备运行大语言模型并完成文档理解、多轮对话与代码辅助等任务的技术方案。其核心依赖本地模型推理、文档解析向量化和轻量级对话调度三大能力。随着Phi-3、Qwen2、Llama3等轻量化开源模型普及,以及Ollama、LM Studio等易用工具成熟,普通用户已可在主流笔记本上实现PDF摘要、合同比对、代码注释等真实办公场景。本文聚焦离线AI的硬件适配、模型选型、文件处理链路与知识库构建,尤其强调中文OCR支持、结构化文档提取与CPU/GPU混合推理优化,助力非开发

weixin_31968639的博客 498

Docker离线部署OpenWebUI操作步骤

docker离线部署openwebui

m0_49333265的博客 4356

【算法】刷题路线(系统+全面)

本系列基于当前各大公司对大公司的考察情况,给大家规划一条可行的算法刷题路线,大概会规划 200 道自认为有用的题,并且争取让初学者,能够刷起来更加丝滑,而且每个阶段都会进行相对应的说明。当然,无论是面试还是笔试,你也完全可以按照这个路线来,应付大公司算法面试是够的了。

wufaqidong1的博客 7954

头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

kercii的博客 7385

二叉树刷题小结

if(!***********逻辑代码*************if(pre)pre = root;if(root)***********逻辑代码*************if(pre)pre = root;if(!***********逻辑代码*************if(pre)pre = root;

qq_61597023的博客 741

【华为OD机试真题 新系统】1029、字符串处理 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1029、字符串处理 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,

KJ.JK 219

API深度集成——OpenClaw与第三方服务无缝对接(2026实战版)

本文介绍了OpenClaw系统与第三方服务的API深度集成技术,重点阐述了RESTful API的实现方案。通过一个功能完善的REST客户端类(RestClient)展示了核心功能:支持请求重试、拦截器机制、错误处理和认证管理等;同时提供了API资源管理器(ApiResourceManager)简化资源操作。这些技术实现了OpenClaw与外部系统的稳定可靠对接,为开发者构建API集成方案提供了2026年的最佳实践。

博客 1217

高频知识总结 | 算法题如何刷?我的高效刷题方法

下面把我平时针对每道题的题号收集、博客资料收集的文档都分享给大家。注意!这个题号并不是说就要全部都刷,因为时间来不及,一定把我上面提到的高频题按分类给刷明白了,如果有余力再把剩下的给刷了!所有回溯递归都是一样的套路,明确递归的对象,对一个节点进行考虑,正如二叉树一样,回溯其就是 N叉树 + 剪枝明确递归的对象,要对哪个节点进行递归(二叉树)?还是对一张表的一个格子进行递归(岛屿问题)?还是要对一个状态进行递归(全排列树状图画出来)?

C++,Java,Python,C#编程选手,偶尔刷刷leetcode 2793

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【C++刷题】二叉树基础OJ题

记录C++刷题,二叉树基础题,包括:965. 单值二叉树 104. 二叉数的最大深度 144. 二叉树的前序遍历 100. 相同的树 101. 对称二叉树 572. 另一棵树的子树 牛客网KY11 二叉树遍历

tan_run的博客 908

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Leetcode刷题笔记——二叉树篇

本文给大家总结了二叉树中的DFS,二叉树本身就是一种递归定义的数据结构,所以二叉树和DFS是紧密相关的,其中的递归思想又诞生了很多衍生题,比如大多数的网格问题都可以看成是二叉树问题的一种变体【四叉结构】,这不是靠死记硬背就能解决的,需要大家在熟悉二叉树的性质的同时对类相关知识点的串联分析,这正好是很多大厂面试中面试官特别喜欢考察的面试者的点,最后,新的一年祝大家学习,工作一切顺利,找到心仪的offer,跳槽涨薪double,迎娶白富美,早日走向人生巅峰~

qq_42898642的博客 1249

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

剑指Offer系列刷题笔记汇总

本文转自:个人网站:点击查看 一前言 二总结 链表-8道 二叉树12道 二叉搜索树3道 数组11道 字符串8道 栈3道 递归4道 回溯法2道 其他15道 一、前言 本系列文章为《剑指Offer》刷题笔记。 刷题平台:牛客网 书籍下载:共享资源 刷题刷的比较慢,花费了两个多月,终于将所有题目过了一遍,牛客网一共有66道题,这次刷题主要使用C++,接下来会使用Python...

Jack-Cui 5万+

剑指Offer刷题学习笔记汇总

渣渣鹏的学习记录1、前言2、题目总结数组(13道):字符串(9道):链表(8道):二叉树(15道):栈(3道):回溯法(2道):递归、动态规划(4道):位运算(1道):其他(11道): 1、前言 本系列为渣渣鹏的《剑指Offer》学习笔记。 刷题平台:牛客网 使用语言:Java GitHub笔记地址:     开始刷题的时间太晚了,草草的结束了第一遍学习,把67道题过了一遍,使用的是java语言进...

weixin_43608645的博客 709

【散刷】二叉树基础OJ题(二)

【散刷】二叉树基础OJ题(二)

tan_run的博客 841

leetcode刷题(8)二叉树(2)

leetcode之对称二叉树、二叉树的最大深度、翻转二叉树、平衡二叉树

不能再留遗憾了的博客 1406

二叉树LeetCode刷题

本文介绍了一系列关于二叉树的算法问题,包括判断两颗树是否相同、子树判断、翻转二叉树、平衡树判断、以及如何将二叉搜索树转换为双向链表等。每个问题都提供了解题思路和相关Java代码示例,强调了如何分别利用递归和非递归的方法遍历树及构建树。

ijj_zZ的博客 1010

【数据结构刷题专题】—— 二叉树

本文对二叉树专题做了详细讲解,(1)二叉树的遍历方式(2)二叉树的属性(3)二叉树的修改和构造(4)求二叉树的属性(5)二叉树公共祖先问题(6)二叉搜索树的修改和构造

BigDavid123的博客 1341
上一篇: 十大经典排序算法:快速排序和归并排序
下一篇: vm虚拟化
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值