随笔分类 - LeetCode
摘要:一、题目 1、审题 2、分析 给出一个三角形,找出从顶到底端链接的路径和最短的路径和。 二、解答 1、思路: 方法一、 采用 DP 方式,顶 > 底,确定从顶点到下一行的各个元素的最短路径和,最终返回最后一行的最小值。 方法二、 采用 DP 方式,底 --> 顶,依次确定从底到此一行的各个元素最短路
阅读全文
摘要:一、题目 1、审题 2、分析 输出杨辉三角的第 n 行,其中行号从 0 开始。 二、解答 1、思路: 方法一、 直接在一个 List 中计算杨辉三角的每一行。 采用一个 for 循环,每次循环一次就,向 List 头部添加一个元素 1,且 从下标 1 开始,每个元素值变为 val(i) + val(
阅读全文
摘要:一、题目 1、审题 2、分析 输入一个整数 n, 返回杨辉三角的 n 行。 二、解答 1、思路: 方法一、 利用一次循环,直接计算杨辉三角的一行。再利用一次循环用 List 存储杨辉三角的 n 行。 方法二、 直接在一个 List 中计算杨辉三角的每一行。
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,可能是非完全二叉树,补全每个节点的 next 指针。 二、解答 1、思路: 方法一、 采用三个指针进行依层次补全 next 指针。
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个完全二叉树,添加二叉树的 next 指针指向。 二、解答 1、思路: 方法一、 采用队列进行层次遍历,遍历时添加 next 指针。 方法二、 利用两个指针进行层次遍历,添加 next 指针 方法三、 利用递归实现每一层的 next 指针。
阅读全文
摘要:一、题目 1、审题 2、分析 给出字符串 s, 字符串 t;判断 s 中包含 t 的个数,其中 s 中的字符可以间隔包含,但不可以字符交叉包含 t 的字符。 二、解答 1、思路: 方法一、 采用 dp 进行实现。 ①、新建二维数组, dp[t.length()+1][s.length+1],其中 d
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,按照先序遍历顺序组成一棵斜右二叉树。 二、解答 1、思路: 方法一、 采用一个栈进行先序遍历,遍历时将节点重新组装。 方法二、 采用递归 递归实现 右-->左-->根 遍历,并拼接原二叉树的节点顺序。 方法三、 采用 Morris Traversal 方
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,求从根到叶节点的所有节点值和为 sum 的路径的所有节点集合。 二、解答 1、思路: 方法一、 采用递归。 深度优先遍历求出所有从根到叶节点的路径,将和为 sum 的进行记录。 方法二、 采用后续遍历的迭代方法,进行记录和为 sum 的所有路径。 注意:
阅读全文
摘要:一、题目 1、审题 2、分析 判断所给二叉树是否存在一条从根节点到叶子节点的所有节点值之和为 sum。 二、解答 1、思路: 方法一、 采用递归的方式进行判断。 方法二、 采用 preOrder 的迭代方式进行 DFS 二叉树,若找到, 返回 true。 方法三、 采用 postOrder 的迭代方
阅读全文
摘要:一、题目 1、审题 2、分析 给出一颗二叉树,求最小高度(根节点到叶节点的最短距离)。 二、解答 1、思路: 方法一、 采用 BFS 层次遍历的方法进行遍历二叉树。同时,若出现叶子节点,则返回当前高度。 方法二、 采用递归。 另外
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,判断其是否是一棵二叉平衡树。 二、解答 1、思路: 方法一、 采用递归; 每次获取 root 结点的左子树、右子树的高度,比较高度差是否小于等于 1; 同时判断左子树、右子树是否也是二叉平衡树。 方法二、 采用深度优先遍历的方式获取深度,并且获取时比较该
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个数值有序的链表,将这个链表的节点组成一个二叉平衡树。 二、解答 1、思路: 采用的是二分查找的思想,利用递归进行实现。 技巧:利用两个指针, slow 每次向前移动一个单位,fast 每次向前移动两个单位,当 fast 为空 或 fast 为要查找的元素时,此时
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个有序的不重复的整形数组,组成一个二路平衡二叉树(左右子树高度差不超过1)。 二、解答 1、思路: 方法一、 采用递归的方式。(像二分查找) ①、为了保持平衡,查找数组的下标中间的数 nums[mid],作为 root; ②、(0, mid - 1) 作为 roo
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个二叉树,从下往上输出每一层的节点值。 二、解答 1、思路: 方法一、BFS 利用一个队列进行层次遍历,同时 List 进行插入时,利用 add(index, val) 方法, index 指定插入的 List 的下标。 方法二、DFS 采用递归进行层次遍历,从上
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个不含有重复节点值的二叉树的中序、后序遍历序列,求原二叉树的序列。 二、解答 1、思路: 方法一、 采用递归的方式还原二叉树。 ①、后序遍历的末尾节点为 root 节点,root 节点值在 中序遍历中的节点下标为 inIndex; ②、则中序遍历的 (0, inI
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个数值不重复的二叉树的先序、中序遍历的遍历顺序,求该二叉树的原始结构。 二、解答 1、思路: 分析二叉树的先序、中序遍历特点如下: ①、先序(preOrder): 根 --> 左 --> 右; ②、中序(inOrder): 左--> 根 --> 右; ③、先序的第
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,输出其最大深度。 二、解答 1、思路: 方法一、 采用递归方式,输出其最大深度。 方法二、 直接在此方法上递归。 方法三、 采用 BFS 广度优先遍历,用一变量记录深度。 方法四、 利用 DFS 深度优先遍历方法; 采用两个栈,一个栈记录节点,另一个栈记
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,以“之"字形层序输出二叉树的结点值。 二、解答 1、思路: 方法一、 采用一个队列进行层次遍历,遍历每一层时,将每一层结点放入一个数组,用一个标志 flag 记录向左或向右的访问顺序,并将符合的层次的结点访问顺序记录在 List 中。 方法二、 采用递归
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个二叉树,将每一层节点值放在一个集合中,最终返回每一层节点值的所有集合。 二、解答 1、思路: 方法一、 ①、首先,二叉树父即节点入队列。 ②、队列头结点依次出队列,直到队列为空,并将每次出队列的队头节点放在一个 List 中 ③、若队列为空时,说明这一层所有节点
阅读全文
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,判断其是否对称。 二、解答 1、思路: 方法一、 每次递归判断根节点的左孩子与根节点的右孩子是否相等。 方法二、 新建一个栈空间,根节点的左孩子与根节点的右孩子同时入栈,出栈时出两个栈顶元素,判断其值是否相等。 若相等,在入根左孩子的左孩子与根右孩子的右
阅读全文