摘要:
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. 题目 2. 解法 当我们需要对一棵树进行层序遍历时,我们可以使用队列来记录遍历过程。具体实现步骤如下: 首先将根节点入队。 当队列不为空时,取出队首元素,将其值存入结果列表中。 如果该节点有左子节点,则将其左子节点入队。 如果该节点有右子节点,则将其右子节点入队。 重复步骤2-4,直到队列为空 阅读全文
摘要:
1. 题目 2. 解法 当我们遍历一棵二叉树时,我们可以按照层序遍历的方式,从上到下、从左到右地遍历每个节点。 而锯齿形层序遍历则是在层序遍历的基础上, 增加了一个规则:对于每一层,如果当前层是从左到右遍历的,则下一层就从右到左遍历;如果当前层是从右到左遍历的,则下一层就从左到右遍历。 这样,我们就 阅读全文
摘要:
1. 题目 2. 解法 什么是二叉树的右视图 二叉树的右视图是指从二叉树的右侧看,能够看到的节点的值的序列 例如,给定一个二叉树: 1 / \ 2 3 \ \ 5 4 从右侧看,能够看到的节点的值是 [1, 3, 4],这就是二叉树的右视图。 一种求解二叉树的右视图的方法是使用层序遍历,每次记录每一 阅读全文
摘要:
1. 题目 2. 解法 解题思路 我们要找到两个指定节点的最近公共祖先,也就是说,我们要找到一个节点,它是两个指定节点的祖先,而且它的深度尽可能大。 为了找到这样的节点,我们可以从根节点开始,递归地遍历二叉树,判断每个节点是否满足这个条件。 如果一个节点满足这个条件,那么它必须同时满足以下两个子条件 阅读全文
|