摘要:
1. 题目 2. 解法 解答思路 求一棵二叉树的直径,也就是树中任意两个节点之间的最长路径的长度。这条路径可能经过或不经过根节点。路径的长度用边的数量来表示。 解题思路是使用递归函数,对于每个节点,计算它的左子树和右子树的高度, 然后更新一个全局变量 max,使其为 max 和左右子树高度之和的较大 阅读全文
摘要:
1. 题目 2. 解法 解答思路 求一棵二叉树的直径,也就是树中任意两个节点之间的最长路径的长度。这条路径可能经过或不经过根节点。路径的长度用边的数量来表示。 解题思路是使用递归函数,对于每个节点,计算它的左子树和右子树的高度, 然后更新一个全局变量 max,使其为 max 和左右子树高度之和的较大 阅读全文
摘要:
1. 总结 本期主要讲了 栈和树 两种结构 ,关键字:递归 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/path-sum-iii/ 考察点 这道题的考察点是: 二叉树的遍历,如何使用深度优先搜索或广度优先搜索来访问每个节点。 前缀和的概念,如何利用前缀和来快速计算路径和,以及如何处理负数的情况。 哈希表的使用,如何利用哈希表来存储和 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/delete-node-in-a-bst/ 考察点 这道题的考察点主要是以下几个方面: 二叉搜索树的性质和操作,如何在二叉搜索树中查找、插入和删除节点,以及如何找到节点的后继(或者前驱)。 递归的思想和技巧,如何设计递归函数的参数 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/convert-bst-to-greater-tree/ 考察点 总结一下这个题目的要点: 题目给定一个二叉搜索树,要求把它转换成累加树,即每个节点的值是原来的值加上所有大于它的值之和。 为了实现这个转换,我们需要按照节点值降序遍 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/binary-tree-maximum-path-sum/description/ 路径是指从树中任意节点出发,到达任意节点的序列,不一定经过根节点。路径和是指路径上所有节点的值的和。要求返回任意非空二叉树的最大路径和。 考察点 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/basic-calculator/ 2. 解法 解题思路: 使用两个栈,一个存储数字,一个存储运算符 遍历字符串,如果遇到数字,就将其转换为整数并压入数字栈 如果遇到运算符,就比较其与运算符栈顶的优先级,如果高于或等于栈顶的优先级 阅读全文
摘要:
1. 题目 2. 解法 当我们需要对一棵树进行层序遍历时,我们可以使用队列来记录遍历过程。具体实现步骤如下: 首先将根节点入队。 当队列不为空时,取出队首元素,将其值存入结果列表中。 如果该节点有左子节点,则将其左子节点入队。 如果该节点有右子节点,则将其右子节点入队。 重复步骤2-4,直到队列为空 阅读全文
摘要:
1. 题目 2. 解法 当我们遍历一棵二叉树时,我们可以按照层序遍历的方式,从上到下、从左到右地遍历每个节点。 而锯齿形层序遍历则是在层序遍历的基础上, 增加了一个规则:对于每一层,如果当前层是从左到右遍历的,则下一层就从右到左遍历;如果当前层是从右到左遍历的,则下一层就从左到右遍历。 这样,我们就 阅读全文
摘要:
1. 题目 2. 解法 什么是二叉树的右视图 二叉树的右视图是指从二叉树的右侧看,能够看到的节点的值的序列 例如,给定一个二叉树: 1 / \ 2 3 \ \ 5 4 从右侧看,能够看到的节点的值是 [1, 3, 4],这就是二叉树的右视图。 一种求解二叉树的右视图的方法是使用层序遍历,每次记录每一 阅读全文
摘要:
1. 题目 2. 解法 解题思路 我们要找到两个指定节点的最近公共祖先,也就是说,我们要找到一个节点,它是两个指定节点的祖先,而且它的深度尽可能大。 为了找到这样的节点,我们可以从根节点开始,递归地遍历二叉树,判断每个节点是否满足这个条件。 如果一个节点满足这个条件,那么它必须同时满足以下两个子条件 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/validate-binary-search-tree/ 考察点 这道题的考察点是: 对二叉搜索树的定义和性质的理解和掌握。 对递归和迭代的思想和实现的熟练度。 对中序遍历的原理和应用的掌握。 对边界值和特殊情况的处理能力。 2. 阅读全文
摘要:
1. 题目 考察点 考察点是二叉树的遍历和构造,以及分治法的应用 二叉树的遍历有前序遍历,中序遍历和后序遍历三种方式,它们的区别在于根节点的访问顺序。前序遍历是先访问根节点,再访问左子树,最后访问右子树。中序遍历是先访问左子树,再访问根节点,最后访问右子树。后序遍历是先访问左子树,再访问右子树,最后 阅读全文
摘要:
1. 题目 考察点 这道题的考察点是二叉树的遍历和展平, 需要掌握前序遍历,中序遍历和后序遍历的顺序和方法,以及如何将二叉树转换为链表的技巧。 这道题可以用递归,迭代或者原地修改的方式来解决,需要注意展平后的链表要保持和二叉树的前序遍历相同的顺序。 这道题也可以扩展为按照中序遍历或者后序遍历的顺序来 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/implement-trie-prefix-tree/ 2. 解法 什么是 Trie (前缀树)? Trie (前缀树) 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。 它的每个节点都包含一个长度为 26 的数组,用 阅读全文
摘要:
1. 题目 https://leetcode.cn/problems/daily-temperatures/ 2. 解法 单调栈 单调栈是一种满足单调性的栈结构,也就是说,栈中的元素按照它们在栈内的位置,要么递增,要么递减。 单调栈可以在O(n)的时间复杂度内解决一些找到下一个更大或更小元素的问题, 阅读全文
摘要:
1. 题目 2. 解法 有两种常见的方法: 一种是使用数组和滑动窗口, 另一种是使用单调栈。 数组和滑动窗口 思路 使用数组和滑动窗口的方法的思路是: 对于每个元素,如果我们知道它左右两边第一个比它小的元素的下标,那么我们就可以计算出以它为高度的最大矩形的宽度,即右边界减去左边界再减一。 为了找到每 阅读全文
|