递归
只会写臭虫
这个作者很懒,什么都没留下…
展开
-
LeetCode 95. 不同的二叉搜索树 II
思路:递归构造,选取当前序列的根节点,然后递给构造以该根节点的左子树集合和右子树集合,因为序列是递增的,所以根节点左边的子树一定比根节点小,右子树一定比右子树大。递归出口是end>begin,返回NULL。参考的题解代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...原创 2019-06-22 12:52:47 · 207 阅读 · 0 评论 -
LeetCode 124. 二叉树中的最大路径和、LeetCode 687. 最长同值路径
LeetCode 124. 二叉树中的最大路径和对于任意一个节点, 如果最大和路径包含该节点, 那么只可能是两种情况:1. 其左右子树中所构成的和路径值较大的那个加上该节点的值后向父节点回溯构成最大路径2. 左右子树都在最大路径中, 加上该节点的值构成了最终的最大路径每个节点返回max(自己+左子树的最长路径,自己+右子树的最长路径),注意,当左右子树最长路径<0时,应该返回自身(因...原创 2019-06-23 15:55:43 · 567 阅读 · 0 评论 -
LeetCode 236. 二叉树的最近公共祖先
解法:代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };...转载 2019-07-17 20:16:22 · 63 阅读 · 0 评论 -
【剑指offer】树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)class Solution {public: bool judge(TreeNode* a,TreeNode* b){ if(b==NULL) return true; if(a!=NULL&&b!=NU...原创 2019-07-31 00:15:57 · 84 阅读 · 0 评论 -
利用递归实现栈的逆序
代码:利用递归暂时保存栈顶元素。其他见注释//利用递归得到栈底元素,并将栈底元素弹出int getbottom(stack<int> &s) { int top = s.top(); s.pop(); if (s.empty()) return top; int next = getbottom(s); //不是栈底元素的时候要把当前元素入栈 s.push...原创 2019-08-20 13:13:54 · 205 阅读 · 0 评论 -
最小的k个数(堆排序实现)
先用数组前k个元素维护一个大小为k的大顶堆(每次将元素插在最后,然后自底向上调整),从第k+1个数组元素开始,当数组元素小于堆顶时,取出堆顶,然后将这个元素放在堆顶,自顶向下调整。最后取出k个数的时候,先取出堆顶,然后将最后一个元素放在堆顶,自顶向下调整。class Solution {public: static const int maxn=1000000; int f=...原创 2019-08-15 14:27:46 · 492 阅读 · 0 评论