![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
宝宝可乖了
这个作者很懒,什么都没留下…
展开
-
leetcode---102. Binary Tree Level Order Traversaleode C++ 题解
102. Binary Tree Level Order TraversalC++,应该是最短的代码了。层序遍历一般来说确实是用队列实现的,但是这里很明显用递归前序遍历就能实现呀,而且复杂度O(n)。。。要点有几个:利用depth变量记录当前在第几层(从0开始),进入下层时depth + 1;如果depth >= vector.size()说明这一层还没来过,这是第一次来,...原创 2019-03-14 15:26:11 · 259 阅读 · 0 评论 -
leetcode---96. Unique Binary Search Trees C++ 题解
96. Unique Binary Search TreesC++,讲一下思路。设n个结点的树能组成bst个数为dp(n),以点i为根结点构成的BST数目为f(i);根据以上假设,我们可以先得出dp(0) = 0,dp(1) = 1,这是边界条件;因为bst的个数应该为以每个结点作为根结点能构成的bst数目的总和,则有dp(n) = f(1) + f(2) + f(3) + ... ...原创 2019-03-11 17:08:39 · 312 阅读 · 0 评论 -
leetcode---95. Unique Binary Search Trees II C++题解
C++。思路如下:对于连续整数序列[left, right]中的一点i,若要生成以i为根节点的BST,则有如下规律:i左边的序列可以作为左子树结点,且左儿子可能有多个,所以有vector<TreeNode *> left_nodes = generate(left, i - 1);;i右边的序列可以作为右子树结点,同上所以有vector<TreeNode *> ...原创 2019-03-11 17:07:11 · 304 阅读 · 0 评论 -
leetcode---94. Binary Tree Inorder Traversal C++题解
C++,二叉树的中序遍历,这个没什么好说的2333。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), ri...原创 2019-03-11 17:06:00 · 257 阅读 · 0 评论 -
leetcode---93. Restore IP Addresses C++题解
93. Restore IP Addressesdfs,回溯+剪枝。。。就我觉得中等题做到后面,完成一道题花的时间越来越长吗?下面说下思路用left和right变量控制ip地址每段的范围,其中:left作为每段起始点,且在每次函数调用中向后递进,即dfs(ans, s, depth + 1, right + 1, temp + ts + ".");;righr作为每段终点,同时也是循...原创 2019-03-10 12:48:57 · 389 阅读 · 0 评论 -
leetcode---114. Flatten Binary Tree to Linked List C++题解
114. Flatten Binary Tree to Linked ListC++,数据量不大的情况下,时间没什么意义,看运气都。。。复杂度O(n),思路如下:分两步:将每个结点的右子树,接到左子树叶子结点上,有如下规则:一直遍历左子树,如果有右子树,将右子树结点入栈,直到叶节点;当前结点为叶节点时,取当前结点或者最近的祖父结点的右子树作为左子树结点(取栈顶);递归每个左儿子结...原创 2019-03-14 15:37:29 · 255 阅读 · 0 评论 -
leetcode---113. Path Sum II C++题解
113. Path Sum IIC++。dfs,回溯,不剪枝。没有说是正整数就不要剪枝了。。。typedef TreeNode* TNP;class Solution {public: vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<vector<in...原创 2019-03-14 15:36:34 · 263 阅读 · 0 评论 -
leetcode---109. Convert Sorted List to Binary Search Tree C++题解
109. Convert Sorted List to Binary Search TreeC++,代码很简短。。。本来可以真的去构造AVL树,但是给的序列已经是有序的了,就没必要了。不然AVL写下来至少也得七八十行。。。思路就是利用分治的思想,将中间结点作为分割点,分成左子树和右子树。首先链表元素可以先用vector存一下,因为后面如果用链表再去找中间结点的话,很影响效率;找到当前区间...原创 2019-03-14 15:35:48 · 266 阅读 · 0 评论 -
leetcode---106. Construct Binary Tree from Inorder and Postorder Traversal C++题解
106. Construct Binary Tree from Inorder and Postorder Traversal以下思路参考柳婼文章:已知后序与中序输出前序(先序)C++。首先要知道一个结论,前序/后序+中序序列可以唯一确定一棵二叉树,所以自然而然可以用来建树。看一下中序和后序有什么特点,中序[9,3,15,20,7] ,后序[9,15,7,20,3];有如下特征:...原创 2019-03-14 15:34:00 · 318 阅读 · 0 评论 -
leetcode---105. Construct Binary Tree from Preorder and Inorder Traversal C++题解
105. Construct Binary Tree from Preorder and Inorder Traversal这道题剑指offer已经做过了,见重建二叉树直接复制思路:C++。首先要知道一个结论,前序/后序+中序序列可以唯一确定一棵二叉树,所以自然而然可以用来建树。看一下前序和中序有什么特点,前序1,2,4,7,3,5,6,8 ,中序4,7,2,1,5,3,8,6;有...原创 2019-03-14 15:28:16 · 287 阅读 · 0 评论 -
leetcode---103. Binary Tree Zigzag Level Order Traversal C++题解
103. Binary Tree Zigzag Level Order Traversal102题解–102. Binary Tree Level Order Traversal上一题递归做的,这题也可以递归做,同样也是线性复杂度,但是递归的效率肯定比较低,所以这次也提供用队列和栈的解法。递归版本,就是在102解法的基础上,将ans的行按照奇数反向reverse:class Solu...原创 2019-03-14 15:27:18 · 283 阅读 · 0 评论 -
leetcode---98. Validate Binary Search Tree C++ 题解
98. Validate Binary Search Tree推荐办法只需要明白一个结论:BST树的中序遍历一定是严格递增的参考:二叉排序树(BST)/二叉查找树的建立(BST是笔试面试的常客);中序走一遍,生成中序序列;判断中序序列是否递增。。。class Solution {public: bool isValidBST(TreeNode* root) { ...原创 2019-03-11 17:09:58 · 280 阅读 · 0 评论