![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归
Wade_Gao
这个作者很懒,什么都没留下…
展开
-
LeetCode-572:另一个树的子树
一、题目描述二、解题思路采用递归来解决:如果一个树是另一个树的子树,那么:主树和子树为同一棵树子树是主树的左子树的子树子树是主树的右子树的子树那么我们可以得到如下代码:class Solution {private: bool isSametree(TreeNode* s, TreeNode* t) { if(!s && !t) retu...原创 2020-05-07 01:48:08 · 131 阅读 · 0 评论 -
LeetCode-606:根据二叉树创建字符串
一、题目描述二、解题思路递归进行,首先加入当前传入的头节点,然后如果左子树不空,sln加上被括号包围的左子树返回结果,否则sln加上一对空括号;如果右子树不空,sln加上被括号包围的右子树返回结果。to_string(T val):将数值转化为字符串。返回对应的字符串。函数原型string to_string (int val);string to_string (long v...原创 2020-05-02 16:27:56 · 135 阅读 · 0 评论 -
LeetCode-33:搜索旋转排序数组
一、题目描述二、解题思路要求在O(logn)O(logn)O(logn)的时间复杂度内确定序列里是否存在这个数字,只能采用二分法从旋转的方式可以看出,是把较大的那一半放到前面来了,从而导致原序列区间有序,我们可以确定这个区间的分割点,然后在两个区间内二分查找。但是这样有个问题,二分查找需要保证原序列递增有序,那我们怎么判断传入的区间序列是否为区间有序?答案是比较区间首尾元素大小关系,如果...原创 2020-04-27 23:40:20 · 123 阅读 · 0 评论 -
剑指Offer-51:数组中的逆序对(InversePairs)
一、题目描述二、解题思路典型的归并排序方法怎么计算count呢?在每次归并进行比较时如果nums[i] <= nums[j]:说明当前位置没有逆序,继续向下比较;如果nums[i] > nums[j],说明在前半段中,位置i的已经都比nums[j]大了前半段中位置i及其后面的数字一定比nums[j]大。确定前半段比nums[j]大的个数:注意是“在前半段中i及其后...原创 2020-04-24 12:10:02 · 294 阅读 · 0 评论 -
LeetCode-337:打家劫舍 III
一、题目描述二、解题思路错误思路:刚开始我以为只要隔层相加取最大就行了,但是不是这么回事,因为[1, 2, null, 2, 5]应该返回1 + 5 = 6,隔层只相加一部分是完全有可能的正确思路假设从root节点开始如果抢劫了root节点,那么一定不可能抢劫root->left和root->right,只能是抢劫完root之后继续抢劫root->left和ro...原创 2020-04-21 13:36:16 · 104 阅读 · 0 评论 -
LeetCode-106:从中序与后序遍历序列构造二叉树
一、题目描述二、解题思路我写过一篇从前序和中序遍历序列构造二叉树的文章,和这道题的思路是一模一样的三、解题代码class Solution {public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { if(!postorder.s...原创 2020-04-10 14:57:40 · 76 阅读 · 0 评论 -
LeetCode-105:从前序与中序遍历序列构造二叉树
一、题目描述二、解题思路先修概念这道题只能用递归来做,重点是怎么在两个序列里确定左右子树的区间由上一步的思路,这两个区间需要用户去指定前序遍历:NLR;中序遍历:LNR递归前的准备工作首先,给定的前序遍历的区间段,我们可以知道当前正在创建的子树的头结点:前序遍历区间最左的元素其次,我们需要找到这个元素为于中序遍历区间的何处:从中序遍历区间最左遍历到区间最右,相等证明找到...原创 2020-04-10 14:39:16 · 109 阅读 · 0 评论