摘要:
验证二叉搜索树 CategoryDifficultyLikesDislikes algorithms Medium (31.28%) 620 - TagsCompanies 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节 阅读全文
摘要:
CategoryDifficultyLikesDislikes algorithms Medium (62.81%) 407 - TagsCompanies 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。 示例:输入:3输出: [ [1,null,3,2], [3,2, 阅读全文
摘要:
思路 标签:动态规划 假设n个节点存在二叉排序树的个数是G(n),令f(i)为以i为根的二叉搜索树的个数,则 G(n)=f(1)+f(2)+f(3)+f(4)+...+f(n) 当i为根节点时,其左子树节点个数为i-1个,右子树节点为n-i,则 f(i)=G(i−1)∗G(n−i) 综合两个公式可以 阅读全文
摘要:
参考leetcode题解区@Paulking大神的模版,可以使用一个模版掌握三种遍历的非递归写法,很棒, 感谢🙏 链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/liang-ta-lai-liao 阅读全文
摘要:
8 / \ -3 7 / \ 1 4 最大路径:4 -> -3 -> 8 ->7 res = 16 看到二叉树的题,首先尝试使用递归来分析。一棵 二叉树的最大路径有 3 种 情况: 1. 最长路径 不包含根节点 8 ,全在左子树中; 2. 最长路径 不包含根节点 8,全在右子树中; 3. 最长路径包 阅读全文
摘要:
使用并查集算法,核心思想:将 equations 中的算式根据 == 和 != 分成两部分,先处理 == 算式,使得他们通过相等关系各自勾结成门派;然后处理 != 算式,检查不等关系是否破坏了相等关系的连通性。 /* * @lc app=leetcode.cn id=990 lang=cpp * * 阅读全文
摘要:
1.DFS 这道题让将矩阵中被'X'包围的不接触边框的'O组成的连通分量用'X'替换,显然可以使用DFS的方法解答,直接的想法是,遍历二维矩阵,遇到‘O’使用DFS判断由'O'组成的连通分量有没有接触到边框, 没有接触到DFS返回true,并将'O组成的连通分量用'X'替换;否则返回false,不替 阅读全文
摘要:
本题可以套用和 [LeetCode] 200. Number of Islands 岛屿的数量 与 [LeetCode 695] Max Area of Island 岛的最大面积一样的dfs模版,不同的是DFS的遍历路径不同,本题 采用的是类似十字遍历方式,具体见如下代码。 1 /* 2 * @D 阅读全文
摘要:
这道求岛屿数量的题的本质是求矩阵中连续区域的个数,很容易想到需要用深度优先搜索 DFS 来解,我们需要建立一个 visited 数组用来记录某个位置是否被访问过。由于本题没有要求不能破坏原矩阵, 所以可以使用DFS的方法将矩阵中每一块连续的1都置为0,以此标记以访问过,则可以到空间复用的目的。特别重 阅读全文
摘要:
1. DFS 从一个节点出发,使用 DFS 对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,DFS 常用来求解这种 可达性 问题。 在程序实现 DFS 时需要考虑以下问题: 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈(递归函数调用)。 标记:和 BF 阅读全文