
数据结构与算法-java语言描述
July-2010
这个作者很懒,什么都没留下…
展开
-
二叉树的最小、最大深度
Leecode111 114二叉树的最小、最大深度题目:思路:代码实现:题目:111:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回它的最小深度 2.114:最大深度,同理;思路:...原创 2019-08-19 19:42:24 · 316 阅读 · 0 评论 -
Leecode 99 恢复二叉搜索树
Leecode99 恢复二叉搜索树题目:思路:代码分析:代码实现:题目:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入: [1,3,null,null,2]1/3\2输出: [3,1,null,null,2]3/1\2示例 2:输入: [3,1,4,null,null,2]3/ \1 4/2输出: [2,...原创 2019-09-09 22:17:13 · 119 阅读 · 0 评论 -
Leecode100 相同的树
Leecode100 相同的树题目:思路:代码分析:代码实现:题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:1/ \2 31/ \2 3[1,2,3], [1,2,3]输出: true示例 2:输入:1/21\2[1,2], [1,null,2]...原创 2019-09-10 21:36:59 · 135 阅读 · 0 评论 -
Leecode101对称二叉树
Leecode101 对称二叉树题目:思路:代码分析:代码实现:题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:1/ \2 31/ \2 3[1,2,3], [1,2,3]输出: true示例 2:输入:1/21\2[1,2], [1,null,2...原创 2019-09-10 22:43:53 · 126 阅读 · 0 评论 -
Leecode105 从前序与中序遍历序列构造二叉树
Leecode105 从前序与中序遍历序列构造二叉树题目:思路:代码分析:代码实现:题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ \9 20… / \. 15 7来源:力扣(L...原创 2019-09-11 22:35:12 · 221 阅读 · 0 评论 -
Leecode106 从中序与后序遍历序列构造二叉树
Leecode106 从中序与后序遍历序列构造二叉树题目:思路:代码分析:代码实现:题目:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ \9 20… / \. .15 7来源:力扣...原创 2019-09-11 22:55:37 · 134 阅读 · 0 评论 -
Leecode 108、109 将有序数组、链表转换为二叉搜索树
Leecode108、109 将有序数组、链表转换为二叉搜索树题目:思路:代码分析:代码实现:题目:**将一个按照升序排列的有序数组、链表,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组、链表: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示...原创 2019-09-11 23:30:37 · 186 阅读 · 0 评论 -
Leecode 117. 填充每个节点的下一个右侧节点指针 II
Leecode117 填充每个节点的下一个右侧节点指针 II题目:思路:代码分析:代码实现:题目:给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指...原创 2019-09-20 22:07:35 · 133 阅读 · 0 评论 -
Leecode129. 求根到叶子节点数字之和
Leecode129. 求根到叶子节点数字之和题目:思路:代码分析:代码实现:题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3]1/ \2 3...原创 2019-09-22 21:55:54 · 828 阅读 · 0 评论 -
Leecode 37 解数独
Leecode37 解数独题目:思路:代码分析:代码实现:题目:编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和...原创 2019-09-04 22:23:33 · 213 阅读 · 0 评论 -
Leecode51、52 N皇后
Leecode51、52 N皇后题目:思路:代码分析:代码实现:题目:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。(皇后攻击范围无限远,但只能攻击四个方向,水平、垂直以及两条对角线方向)给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方...原创 2019-09-02 21:52:01 · 154 阅读 · 0 评论 -
对红黑树的插入、删除理解及java代码实现
红黑树的性质:节点要么是黑色,要么是红色;根节点永远是黑色;红色节点的子节点只能是黑色;从一个节点到一个null引用的每一条路径必须包含相同数目的黑色节点;根据红黑树的性质:如果节点的两个子节点都为红色,则可以进行颜色反转,节点变红,两个子节点都变黑;节点的旋转:如果需要插入的节点相对于父亲节点的位置 和 父亲节点相对于 爷爷节点的位置相同时,单旋转,如果位置不同,则需要...原创 2019-08-23 23:05:07 · 565 阅读 · 0 评论 -
二叉树的最近公共祖先
Leecode235、236二叉树的最近公共祖先题目:思路:第二思路详细分析:代码实现:题目:235:二叉搜索树的最近公共祖先236:二叉树的最近公共祖先思路:最近公共祖先最容易想到的就是使用路径来解决,如果每个子节点都有指向父节点的指针,那这个题目就变成了找两个子节点到根节点的两条交叉链表的交叉点;这个就很好实现了,如果没有指向父节点的指针且树是二叉搜索树,那么可以分别找到从根节点到...原创 2019-08-16 16:43:06 · 939 阅读 · 0 评论 -
Leecode50 Pow(x,n)
@[TOC](Leecode50 Pow(x,n))题目:50:实现 pow(x, n) ,即计算 x 的 n 次幂函数。思路:使用库函数,但一般都要求不这么做,失去了题目的价值了;循环暴力乘,时间复杂度O(n);5^4实际上等于 15^2,以此思想实现时间复杂度为O(logN)的解法;第三思路详细分析:注意N为负数的时候应该将N变成正数,并且x = 1/x;...原创 2019-08-26 22:37:38 · 122 阅读 · 0 评论 -
Leecode102 二叉树的层次遍历
Leecode102 二叉树的层次遍历题目:思路:代码实现:题目:102:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回其层次遍历结果:[[3],[9,20],[15,7]]思路:BFS:搜索即完美符合该题的要求,只...原创 2019-08-26 22:47:33 · 156 阅读 · 0 评论 -
Leecode144、94、145 二叉树的前、中、后序遍历
Leecode144、94、145 二叉树的前、中、后序遍历题目:思路:思路详细分析:代码实现:题目:144、94、145:给定一个二叉树,返回它的 前、中、后序 遍历。。思路:使用递归;使用循环;思路详细分析:递归方法非常简单,无需说明,在这几个题目中,因为十分简单,除了函数的参数外也没有用到额外的局部变量,并没有浪费太多的空间;使用循环则需要借助Stack,...原创 2019-08-27 00:21:38 · 151 阅读 · 0 评论 -
Leecode169 求众数
Leecode169 求众数题目:思路:代码实现:题目:169:给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数;思路:暴力解法,双层循环统计每个数字出现的次数,大于n/2则返回,时间复杂度n2;改善暴力解法的时间复杂度,使用hash码来快速定位存储数字出现的次数并对其进行+1,...原创 2019-08-28 23:02:53 · 144 阅读 · 0 评论 -
Leecode122 买卖股票的最佳时机Ⅱ
Leecode122 买卖股票的最佳时机Ⅱ题目:思路:代码实现:题目:122: 给定一个数组,它的第 i 个元素是一支给定股票第 i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路:DFS:当手里没有股票的时候可以选择买或者不买,当手里有股票的时候可以选择卖...原创 2019-08-28 23:05:57 · 135 阅读 · 0 评论 -
Leecode22 括号生成
Leecode22 括号生成题目:思路:代码实现:题目:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路:分治:求n可以在n-1的答案前面、后面加上一对括号,或者前面加左括号,后面加右括号,但是得注...原创 2019-08-30 21:33:18 · 126 阅读 · 0 评论 -
Leecode 130. 被围绕的区域
Leecode130. 被围绕的区域题目:思路:代码分析:代码实现:题目:给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的...原创 2019-09-24 00:45:51 · 166 阅读 · 0 评论