菜菜子不想再菜了
菜菜子不想再菜了
全部文章
分类
归档
标签
去牛客网
登录
/
注册
菜菜子不想再菜了的博客
全部文章
(共84篇)
题解 | #输出二叉树的右视图#
最捞的一集,分步骤求解😅求右视图用逆序的层序遍历,可以节省一点时间。 #include <cstddef> class Solution { public: bool areAllEmpty(const vector<TreeNode*>& vec) {...
2024-06-17
0
158
题解 | #重建二叉树#
通过前序可以确定根,通过根和中序可以确定左子树和右子树,然后递归构建即可。 class Solution { public: TreeNode* reConstructBinaryTree(vector<int>& preOrder, vector<int>...
2024-06-17
0
196
题解 | #序列化二叉树#
怎么还有这种题啊,我以为只有想不出来思路和秒过两种题,没想到还有这种堆程序的题。。。看了题解,什么时候我也能写出来这种递归啊,简直美如画😍 class Solution { public: char* Serialize(TreeNode* root) { if (!r...
2024-06-16
0
143
题解 | #在二叉树中找到两个节点的最近公共祖先#
这递归太妙了,记录一下 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), ...
2024-06-16
0
156
题解 | #二叉搜索树的最近公共祖先#
说实话,写了这么些关于树的题目,感觉树的题目就应该用递归写,只要思路想清晰,写起来真舒服。这题仔细分析一下就会发现,关键点在于,p和q一定在最近祖先的两侧或本身就是最近祖先。所以就可以自顶向下去找,如果都落在一侧,那这个结点肯定不是最近的祖先,一旦发现落在两侧(包括落在子树的根上),那这个结点就是最...
2024-06-15
0
146
题解 | #判断是不是平衡二叉树#
跟上一题有点类似,如果用两层递归,时间复杂度太大。看了题解才发现可以边递归计算左右子树深度边判断是否平衡。可能平时不怎么用c++,竟然忘了引用这个功能。惭愧惭愧。。。 class Solution { public: bool judge(TreeNode* r, int& de...
2024-06-15
0
155
题解 | #判断是不是完全二叉树#
总结一下经验吧,感觉还是要静下心来仔细分析题目,不能急着动笔,不然就会遇到数不尽的坑。练习的时候还可以拿不通过样例调试,实战可没有这种条件。这一题稍微想想就知道可以用层序遍历。通过检查每一层的结点分布以及这一层的层数与个数的关系来判断到该层为止是否是完全二叉树。突然想到其实不用一层一层看,直接将层序...
2024-06-14
0
161
题解 | #判断是不是二叉搜索树#
感觉还是有点难度的,我能想到的就三条路:递归。一开始我用递归写了一遍,发现仅仅用自顶向下的逻辑没办法排除下层以下的值比本结点大的情况,所以还得加一个变量去记录每层以各个结点为根的子树的最大值和最小值,如果这个过程也以递归来求,那时间空间成本都太大了,相当于两层循环。栈。虽然这是自底向上的逻辑,但也不...
2024-06-14
0
159
题解 | #二叉树的镜像#
用广度优先搜索的思路还是很简单的。 class Solution { public: TreeNode* Mirror(TreeNode* pRoot) { if (!pRoot) return pRoot; vector<TreeNode*>...
2024-06-13
0
149
题解 | #合并二叉树#
代码看起来有点繁琐了,主要是结点为None的情况无法放在加法的过程中去考虑,因为这样无法让None指针接收另一个指针的节点值,所以得从none结点的父节点就要考虑none这种情况。 /** * struct TreeNode { * int val; * struct TreeNode *...
2024-06-13
0
175
首页
上一页
1
2
3
4
5
6
7
8
9
下一页
末页