2024年最新室友不在家,打开LeetCode来一次题库屠杀,2024年最新太厉害了

img
img

既有适合小白学习的零基础资料,也有适合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的。

  1. 写一个TreeSize先来计算二叉树的大小
  2. 写一个_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的。

  1. 写一个TreeSize先来计算二叉树的大小
  2. 写一个_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的。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

670549787)]
[外链图片转存中…(img-IXnOnXGs-1715670549788)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值