随笔分类 -  算法

1 2 3 4 5 ··· 7 下一页
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 把递归就当作三个节点,左 根 右。这层递归里要做的事情就是找到最大高度,找最大高度就是左子树算完最大高度,右子树也算完最大高度,然后+1即可。所以就是 阅读全文
posted @ 2021-04-23 11:30 小千北同学超爱写代码 阅读(85) 评论(0) 推荐(0)
摘要:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树 阅读全文
posted @ 2021-04-20 19:26 小千北同学超爱写代码 阅读(54) 评论(0) 推荐(0)
摘要:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。 所以结果应当返回修剪好的二叉 阅读全文
posted @ 2021-04-19 17:31 小千北同学超爱写代码 阅读(64) 评论(0) 推荐(0)
摘要:只要进行中序遍历,结果得到的数组是升序的就可以了。sorted默认是升序 class Solution: def isValidBST(self, root: TreeNode) -> bool: inorder=self.inorder(root) return inorder==list(sor 阅读全文
posted @ 2021-04-15 10:33 小千北同学超爱写代码 阅读(53) 评论(0) 推荐(0)
摘要:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 class Solution: def kthSmallest(self, root: TreeNode, k: int) -> int: l=[] def in_order( 阅读全文
posted @ 2021-04-15 10:26 小千北同学超爱写代码 阅读(37) 评论(0) 推荐(0)
摘要:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节 阅读全文
posted @ 2021-04-15 10:12 小千北同学超爱写代码 阅读(61) 评论(0) 推荐(0)
摘要:给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 class Solution: def getMinimumDifference(self, root: TreeNode) -> int: #初始化,最小值赋值为无穷大,last_value记录上一个节点的值 mi 阅读全文
posted @ 2021-04-14 19:28 小千北同学超爱写代码 阅读(46) 评论(0) 推荐(0)
摘要:给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和值: 2你应该返回如下子树: 2 / \ 1 3 来源:力扣(LeetCode)链接 阅读全文
posted @ 2021-04-14 19:05 小千北同学超爱写代码 阅读(55) 评论(0) 推荐(0)
摘要:给定一个二叉树的根节点 root ,返回它的 中序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: def in_ 阅读全文
posted @ 2021-04-14 17:13 小千北同学超爱写代码 阅读(71) 评论(0) 推荐(0)
摘要:给定一个 N 叉树,返回其节点值的 后序遍历 。 N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 进阶: 递归法很简单,你可以使用迭代法完成此题吗? 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n 阅读全文
posted @ 2021-04-14 16:46 小千北同学超爱写代码 阅读(49) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领 阅读全文
posted @ 2021-04-14 16:43 小千北同学超爱写代码 阅读(55) 评论(0) 推荐(0)
摘要:给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 class Solution: def findDuplicateSubtrees(self, root: TreeNode) -> List[Tre 阅读全文
posted @ 2021-04-14 16:35 小千北同学超爱写代码 阅读(73) 评论(0) 推荐(0)
摘要:序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 哈哈哈评论区的合成大西瓜,言简意赅! 大意就是说如果碰见叶子节点,那么久把它给变成#再次参与计算。最终如果剩下来的只有一个#,就说明这个是有效的 c 阅读全文
posted @ 2021-04-14 16:22 小千北同学超爱写代码 阅读(54) 评论(0) 推荐(0)
摘要:你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。 空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。 示例 1: 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem 阅读全文
posted @ 2021-04-14 16:07 小千北同学超爱写代码 阅读(83) 评论(0) 推荐(0)
摘要:给定一个 N 叉树,返回其节点值的 前序遍历 。 N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 进阶: 递归法很简单,你可以使用迭代法完成此题吗? 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n 阅读全文
posted @ 2021-04-14 15:30 小千北同学超爱写代码 阅读(54) 评论(0) 推荐(0)
摘要:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 对递归有了一点点认知,就是说出当前步要进行什么,下一步要进行什么即可 在这里定义了一个函数preorder,它就是用来把当前节点的值加到列表中去,并且再对左边的子树节点做这个操作,再对右边的子树也进行这个操作。 定义了这个函数 阅读全文
posted @ 2021-04-14 15:17 小千北同学超爱写代码 阅读(106) 评论(0) 推荐(0)
摘要:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root:return [] result=[ 阅读全文
posted @ 2021-04-01 19:30 小千北同学超爱写代码 阅读(61) 评论(0) 推荐(0)
摘要:给定一个无重复元素的有序整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按如下格式输出: "a->b" ,如果 阅读全文
posted @ 2021-04-01 16:56 小千北同学超爱写代码 阅读(62) 评论(0) 推荐(0)
摘要:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 就是出现双数数量的字符肯定能够组成回文的部分。就存下来这些数量;然后对于奇数个的要其中最大的偶数个。再留下一个原奇数个的字符,真是太神奇了。 cl 阅读全文
posted @ 2021-04-01 16:27 小千北同学超爱写代码 阅读(62) 评论(0) 推荐(0)
摘要:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢? 来源:力扣(LeetC 阅读全文
posted @ 2021-04-01 13:57 小千北同学超爱写代码 阅读(87) 评论(0) 推荐(0)

1 2 3 4 5 ··· 7 下一页