既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
🍀1.2 思路
如果根是空,那么return true;
如果根不是空,那我们再继续比较根和它的左子树、右子树。注意不要比较相等,因为相等并不能得到结果,并不能说明树是单值二叉树,还要继续递归往下走。如果每个根和它的左右孩子都相等,说明这是一颗单值二叉树。
🍉1.3 代码演示
bool isUnivalTree(struct TreeNode\* root){
if(root == NULL)
return true;
if(root->left && root->val != root->left->val)
return false;
if(root->right && root->val != root->right->val)
return false;
return isUnivalTree(root->left) && isUnivalTree(root->right);
}
🍭2.相同的树
🍒2.1题目描述
🍀2.2 思路
一棵树分成三个部分进行比较:根、左子树、右子树。左右子树又可以分为根、左子树、右子树。直到NULL结束。
🍉2.3 代码演示
bool isSameTree(struct TreeNode\* p, struct TreeNode\* q){
//都是空树
if(p==NULL&&q==NULL)
return true;
//一个为空,一个不为空
if(p==NULL||q==NULL)
return false;
//都不为空
if(p->val != q->val)
return false;
//递归比较左右子树
return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}
🍭3.对称二叉树
🍒3.1题目描述
🍀3.2 思路
没有必要比较根,我的左子树和你的右子树进行比较,我的右子树和你的左子树进行比较。写一个_isSymmetric子函数来比较。
🍉3.3 代码演示
bool \_isSymmetric(struct TreeNode\*p,struct TreeNode\*q)
{
if(p== NULL && q==NULL)
return true;
if(p==NULL||q==NULL)
return false;
return p->val==q->val
&&\_isSymmetric(p->left,q->right)
&&\_isSymmetric(p->right,q->left);
}
bool isSymmetric(struct TreeNode\* root){
if(root==NULL)
return true;
return \_isSymmetric(root->left,root->right);
}
🍭4.二叉树的前序遍历
🍒4.1题目描述
🍀4.2 思路
return一个前序遍历的数组,且这个数组必须是被malloc的。
- 写一个TreeSize先来计算二叉树的大小
- 写一个_preorder来实现前序遍历,并把前序遍历的结果存在一个数组里
int *pi, int *returnSize为输出型参数。
🍉4.3 代码演示
int TreeSize(struct TreeNode\* root)
{
return root == NULL?0:TreeSize(root->left)+TreeSize(root->right)+1;
}
void \_preorder(struct TreeNode\* root,int\* a,int \*pi)
{
if(root==NULL)
return;
a[(\*pi)++]=root->val;
\_preorder(root->left,a,pi);
\_preorder(root->right,a,pi);
}
int\* preorderTraversal(struct TreeNode\* root, int\* returnSize){
int size=TreeSize(root);
int \*a = malloc(sizeof(int)\*size);
\*returnSize = size;
int i = 0;
\_preorder(root,a,&i);
return a;
}
🍭5.二叉树的中序遍历
🍒5.1题目描述
🍀5.2 思路
return一个中序遍历的数组,且这个数组必须是被malloc的。
- 写一个TreeSize先来计算二叉树的大小
- 写一个_inorder来实现前序遍历,并把中序遍历的结果存在一个数组里
int *pi, int *returnSize为输出型参数。
🍉5.3 代码演示
int TreeSize(struct TreeNode\* root)
{
return root == NULL?0:TreeSize(root->left)+TreeSize(root->right)+1;
}
void \_inorder(struct TreeNode\* root,int\* a,int \*pi)
{
if(root==NULL)
return;
\_inorder(root->left,a,pi);
a[(\*pi)++]=root->val;
\_inorder(root->right,a,pi);
}
int\* inorderTraversal(struct TreeNode\* root, int\* returnSize){
int size=TreeSize(root);
int \*a = malloc(sizeof(int)\*size);
\*returnSize = size;
int i = 0;
\_inorder(root,a,&i);
return a;
}
🍭6.二叉树的后序遍历
🍒6.1题目描述
🍀6.2 思路
return一个后序遍历的数组,且这个数组必须是被malloc的。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
670549787)]
[外链图片转存中…(img-IXnOnXGs-1715670549788)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新