既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
这次的题目相比较上次可能会难度上升,尤其是后面两题,反正不会就试着画图
1. 对称二叉树
本题目来源于leetcode 101. 对称二叉树
1.1 题目描述
1.1.1 接口函数
/\*\*
\* Definition for a binary tree node.
\* struct TreeNode {
\* int val;
\* struct TreeNode \*left;
\* struct TreeNode \*right;
\* };
\*/
bool isSymmetric(struct TreeNode\* root){
}
1.2 大致框架
1.2.1 思路与想法
注意按照题目的意思,只有镜像的才是对称的
如何判断一对称二叉树?
如果root
为空,那么是对称。如果不为空的话,当他的左子树与右子树对称时,他才完全对称
2.那么怎么知道左子树与右子树对不对称呢?如果左树的左孩子与右树的右孩子对称,左树的右孩子与右树的左孩子对称,那么这个左树和右树就对称。
1.2.2 具体步骤
- 注意还是要先判空
- 要不断地比较左树的左孩子和右树的右孩子,以及左树的右孩子,和右树的左孩子
- 在此同时我们利用一个函数,接收一个
left
和一个right
,进入递归 - 和之前判断相同的树一样,判断三种情况之后继续递归,分别是双空,单空和值不相等
1.3 整体实现
bool \_isSymmetric(struct TreeNode\* left, struct TreeNode\* right) {
if (left == NULL && right == NULL)
return true;
if (left == NULL || right == NULL)
{
return false;
}
if (left->val != right->val)
{
return false;
}
return \_isSymmetric(left->left, right-&g