动态规划好巧妙啊啊啊啊啊啊啊 啊 int max =Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { //用动态规划来求解 //DFS //根节点的值、左子树的值、右子树的值、 dfs(root); return max; } pri ...
分类:
其他好文 时间:
2020-06-24 21:45:36
阅读次数:
59
之前做tarjan的题,我一直没有搞清楚有向图和无向图中,代码的不同,今天下午向虎哥和zxk讨论了快一个小时,现在终于清楚些了。 最基本的一些东西 有向图 我们需要求的是强连通分量,在有向图中,有四种边。 一种边为树枝边,从根节点遍历,每个节点第一次被访问到,即边(x,y)是从x到y是对y的第一次访 ...
分类:
其他好文 时间:
2020-06-24 21:35:57
阅读次数:
46
173. 二叉搜索树迭代器 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator = new BSTIterator(root); iterator.next(); // 返回 ...
分类:
其他好文 时间:
2020-06-24 15:43:46
阅读次数:
37
递归 思路: 递归判断根节点,左子树,右子树是否相同。 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # se ...
分类:
其他好文 时间:
2020-06-24 11:53:19
阅读次数:
63
如何实现搜索引擎的搜索关键词提示功能? Trie树,字典树。是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。 字典树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。 其中,根节点不包含任何信息。每个节点表示一个字符串中的字符,从根节点到红色节点的 ...
分类:
其他好文 时间:
2020-06-23 13:29:42
阅读次数:
43
记录一下自己理解的堆和堆排序吧。 堆是一种类似于完全二叉树的树形结构,对于二叉树中所有非叶子节点,如果根节点的值严格大于其两个儿子的值,则称为 大顶堆,反之称为小顶堆。 堆排序的一般步骤: 首先利用已有的数据构造一个堆,大顶堆增序,小顶堆降序。 将堆顶的元素与堆末元素交换,接着重新调整除去堆末元素的 ...
分类:
编程语言 时间:
2020-06-22 20:59:19
阅读次数:
91
给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] 输出: 42 来源:力扣(Le ...
分类:
其他好文 时间:
2020-06-21 23:15:04
阅读次数:
47
124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例: 输入: [1,2,3] 1 / \ 2 3 输出: 6 输入: [-10,9,20,null,null,15, ...
分类:
其他好文 时间:
2020-06-21 21:42:33
阅读次数:
45
图论习题整理 求先序排列 需要知道树的遍历方法,分别前中后序,代表着先访问根节点,左子树,右子树,或是左中右,或是左右中 现在给同一棵树的中后两个序列,求前序, 首先清楚这样的性质: 1.对于某个树(无论是子树还是本体,只要是棵完整的树就行),其前序遍历序列的第一个节点肯定是它的根,就是对于节点,其 ...
分类:
其他好文 时间:
2020-06-21 09:25:27
阅读次数:
59
构造一颗二叉排序树(也叫二叉搜索树,BST,Binary Search Tree)十分简单。一般来讲,大于根节点的放在根节点的右子树上,小于根节点的放在根节点的左子树上(如果等于根节点,则可视情况而定),如果写程序的话,可以采用递归的方式,而且由于不存在重叠子问题的情况,因此递归的性能已经足够好(不... ...
分类:
编程语言 时间:
2020-06-21 00:01:36
阅读次数:
97