随笔分类 - LeetCode Python
摘要:题目来源: https://leetcode.com/problems/distinct-subsequences/ 题意分析: 给定字符串S和T,判断S中可以组成多少个T,T是S的子串。 题目思路: 这是一个动态规划的问题。设定ans[i][j]为s[:i] 组成t[:j]的个数。那么动态规划方程
阅读全文
摘要:题目来源: https://leetcode.com/problems/flatten-binary-tree-to-linked-list/ 题意分析: 给出一个二叉树,将这个二叉树变成一个单链形式。 题目思路: 递归的思想,先将根节点连接左子树,然后再连接右子树。 代码(python): # D
阅读全文
摘要:题目来源: https://leetcode.com/problems/path-sum-ii/ 题意分析: 给出一个二叉树和一个整数,返回所有从根节点到叶节点的和等于这个整数的路径。 题目思路: 这题和上一题类似,直接深度递归。记录左子树和sum - 根的值的答案,以及右子树和sum- 根的值的答
阅读全文
摘要:题目来源: https://leetcode.com/problems/path-sum/ 题意分析: 给出一个树和一个整数,判断这棵树是否有一条从根到叶节点的路径,使得路径之和为给定的整数。 题目思路: 这题还是用递归的思想。如果根节点的左右子树都为空,那么返回根的值是否等于sum,否者,sum
阅读全文
摘要:题目来源: https://leetcode.com/problems/minimum-depth-of-binary-tree/ 题意分析: 返回一颗二叉树从根部到叶子的最低高度。 题目思路: 如果根节点为空,那么返回0,如果左子树为空,返回右子树的最低高度+1,右子树为空,返回左子树最低高度+1
阅读全文
摘要:题目来源: https://leetcode.com/problems/balanced-binary-tree/ 题意分析: 判断一棵树是不是平衡树。 题目思路: 如果左子树高度和右子树高度差小于等于1,并且左子树是平衡树,右子树是平衡树,那么这棵树是平衡树。那么我们先用一个新的函数返回树的高度和
阅读全文
摘要:题目来源: https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/ 题意分析: 给定一个排好序的链表,将这个链表转换成一个高度平衡树。 题目思路: 有一个偷懒的方法,将链表转换成一个数组,然后用上一题的解法解决
阅读全文
摘要:题目来源: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意分析: 给出一个排好序的数组,根据这个数据形成一个高度平衡的搜索二叉树。 题目思路: 将中位数为根节点,中位数左边为左子树,右边为右子树
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ 题意分析: 从底向上宽度遍历二叉树。 题目思路: 自顶向下遍历二叉树后将答案翻转。 代码(python): # Definition for a bin
阅读全文
摘要:题目来源: https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 题意分析: 给出一颗二叉树的中序遍历和后续遍历,还原这个树。 题目思路: 这题和上一题类似,用递归的思想,先
阅读全文
摘要:题目来源: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题意分析: 根据二叉树的中序和前序遍历结果,反推这个树,假设只有一个这样的树。 题目思路: 前序遍历的第一个树
阅读全文
摘要:题目来源: https://leetcode.com/problems/maximum-depth-of-binary-tree/ 题意分析: 返回一个树的最大层数。 题目思路: 这里用递归的思想,maxlevel = max( maxleft, maxright) + 1. 代码(python):
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ 题意分析: Z字宽度遍历树。 题目思路: 这题可以用比较取巧的方法。首先获得宽度遍历的结果,然后将第二层的翻转就可以了。 代码(python):
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-level-order-traversal/ 题意分析: 宽度优先搜索一颗二叉树,其中同一层的放到同一个list里面。比如: 3 / \ 9 20 / \ 15 7返回 [ [3], [9,20], [1
阅读全文
摘要:题目来源: https://leetcode.com/problems/symmetric-tree/ 题意分析: 判断一棵树是不是镜像树。 题目思路: 判断左子树的左右子树是不是和右子树的右左子树相同。 代码(python): # Definition for a binary tree node
阅读全文
摘要:题目来源: https://leetcode.com/problems/same-tree/ 题意分析: 判断两棵树是否相等。 题目思路: 用递归的思想,先判断根节点,再判断左右子树。 代码(python): # Definition for a binary tree node. # class
阅读全文
摘要:题目来源: https://leetcode.com/problems/recover-binary-search-tree/ 题意分析: 二叉搜索树中有两个点错了位置,恢复这棵树。 题目思路: 如果是没有空间复杂度限制还是比较简单。首先将树的值取出来,然后排序,将相应的位置判断是否正确。如果要特定
阅读全文
摘要:题目来源: https://leetcode.com/problems/validate-binary-search-tree/ 题意分析: 给定一个二叉树,判断这个二叉树是否二叉搜索树,也就是严格按照左子树小于等于节点和右子树。 题目思路: 树的题目,我们首先想到的就是递归的思想。这里也可以用递归
阅读全文
摘要:题目来源: https://leetcode.com/problems/interleaving-string/ 题意分析: 给定字符串s1,s2,s3,判断s3是否由s1和s2穿插组成。如“abc”由“ac”,“b”组成,而“cba”不是。 题目思路: 这是一个动态规划问题。令ans[i][j]为
阅读全文
摘要:题目来源: https://leetcode.com/problems/unique-binary-search-trees/ 题意分析: 给定一个整数n,返回所有中序遍历是1到n的树的可能。 题目思路: 这是动态规划的题目。选定了第k个为根节点,那么所有的可能就是ans[k-1] * ans[n
阅读全文

浙公网安备 33010602011771号