- 博客(36)
- 收藏
- 关注
原创 算法通关村——轻松搞定二叉树最大最小深度问题
关于根结点的深度究竟是0还是1,不同的地方有不同的标准,我们这里暂时规定根结点的深度为1。可能有人会说,直接把max改为min不就好了吗?3:如果左右子树都不为空,那么最小的深度为左右子树深度的较小值+1。1:如果左子树为空,右子树不为空,那么最小深度为右子树的深度+1。2:如果右子树为空,左子树不为空,那么最小深度为左子树的深度+1。知道最大深度怎么求解后,对于最小深度的求解你是否有思路呢?首先我们需要明确一个问题:二叉树的深度和高度怎么区分呢?言归正传,开始做题。如何能求出二叉树的最大/最小深度呢?
2023-08-03 18:49:21 875
原创 算法通关村——轻松搞定二叉树合并问题
(思路与二叉树的前序遍历类似,都是从根结点开始遍历,遍历完根结点之后,分别遍历它们的左右结点,直到分别遍历完成两棵二叉树)。2:如果其中一颗树为空,那么合并后的二叉树应该为另一个不为空的二叉树,例如:若root1为空,则合并后的二叉树为root2,若root2为空,则合并后的二叉树为root1。3:若两棵二叉树都不为空,则合并后的二叉树对应结点的值应该为两棵二叉树对应结点的值之和,此时需要我们将两个结点合并,即将两个结点的对应值相加。1:如果两棵树都为空,那么合并之后的二叉树应该也为空。
2023-08-03 16:40:18 816
原创 算法通关村——原来层次遍历如此简单
每次遍历需要判断队列是否为空,为空则说明已遍历完整个区间,不为空则进入循环;由于树的结构是一层一层的,所以我们需要记录当前层结点的个数,每次for循环遍历等于结点个数的次数,则可以将该层结点全部遍历。以树为例,遍历是从根结点开始的,先访问根结点,再依次访问之后的每一层,类似金字塔一层一层访问,直到队列为空。
2023-08-01 10:48:02 165
原创 算法通关村——如何使用中序和后序恢复一棵二叉树
第一轮:中序遍历的特点是左子树的元素全部在根的左边,右子树的元素全部在根的右边;后序遍历的特点是根在所有元素的末尾,所以我们可以知道根结点为1。中序序列划分:[3 4 8 6 7 5 2] 1 [10 9 11 15 13 14 12]后序序列划分:[8 7 6 5 4 3 2] [10 15 14 13 12 11 9] 1。中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12。后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1。
2023-07-28 11:29:58 1090
原创 顺序表的增删改查
这篇博客给大家提供了顺序表增删改查基本操作的代码,并且包含了测试样例,大家可以直接在自己的编译器中运行,通过样例体会增删改查,之后大家可以查看各函数并尝试自己动手实现。
2023-07-25 11:34:27 77 4
原创 算法通关村——删除元素专题
我们可以设置slow和fast两个指针,fast指针用来遍历数组,slow指针用来保存有效位置,我们用fast与slow-1进行比较,如果二者不相等,我们就可以将fast的值赋给slow,因为这样可以保证slow与slow-1的值一定不相等。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums =[2,2,0,0]也会被视作正确答案。LeetCode26 给你一个有序数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的顺序可以改变。
2023-07-23 23:53:59 1451 1
原创 算法通关村——不简单的数组增删改查
数组作为最基础,最常用的数据结构,大多数人可能会觉得它很简单,但是,你真的了解数组吗?看完这篇文章,带你认识更深层次的数组。首先我们要知道,数组是什么呢?数组是存放相同数据类型元素的集合,我们可以通过索引来访问数组,需要注意的是,数组中第一个元素的索引为0,最后一个元素的索引是size-1;
2023-07-23 20:30:55 1277 1
原创 算法通关村第二关——指定区间反转问题解析
我们可以建立一个cur指针始终指向区间的第一个元素,之后的每一步操作我们需要以下几个步骤:1.找到当前结点的下一个结点 2.拆除:令cur指针指向的结点指向next结点的下一个结点(即:将next指针指向的结点“拆下”,并保存后一个结点的位置)3.插入: 令next指针指向的结点指向虚拟头结点的下一个结点(这里的虚拟头结点就是我们说的区间前的第一个结点) 4:令虚拟头结点指向next指针所指向的结点。如果说第一种方法的特点是拆拆拆,那这一种方法的特点就类似于从。1.虚拟头结点 2.拆拆拆。
2023-07-18 18:35:22 1855 3
原创 算法通关村第二关——终于学会链表
LeetCode206 给我们单链表的头结点head,请你反转链表,并返回反转后的链表,如图所示:本题有两种方法,分别为建立虚拟头结点辅助反转以及直接操作链表实现反转,两种方法我将逐一分析讲解。
2023-07-17 20:11:23 2204 3
原创 算法通关村第一关——链表经典问题之寻找两个链表的第一个公共结点
这篇博客给出了剑指offer52的题目详解,给出了三种不同的方法,供大家学习。
2023-07-16 20:48:17 2537 1
原创 算法通关村第一关——链表青铜挑战笔记
这篇博客简单介绍了链表的基本概念以及如何进行初始化,初学者一定要了解基本概念,从而进一步完成增删改查等操作。
2023-07-16 16:22:30 2406 1
原创 c语言 通讯录plus
这篇文章提供了通讯录的plus版本,与以往静态定义通讯录大小不同,该通讯录可动态的更新需要 的空间,为用户的使用提供了更便利的条件.
2023-07-14 13:10:09 180 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人