二叉树基础oj题自测

这篇具有很好参考价值的文章主要介绍了二叉树基础oj题自测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.LeetCode965 单值二叉树

二叉树基础oj题自测

解题思路:
遍历二叉树,并且每一个节点值都和根节点的值进行比对,如果不等于根节点的值,则不是单值树。

bool isUnivalTree(struct TreeNode* root){
    if(root==NULL)return true;
    if(root->left&&root->left->val!=root->val)return false;
    if(root->right&&root->right->val!=root->val)return false;
    return isUnivalTree(root->left)&&isUnivalTree(root->right);
}

2.LeetCode100 相同的树

二叉树基础oj题自测

解题思路:
首先比较根节点是否相同,然后分别比较左右子树是否相同。

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.LeetCode101 对称二叉树

二叉树基础oj题自测
解题思路:
判断一个树是否对称,首先要判断左右孩子是否对称相等,还需要判断左孩子的左子树是否和右孩子的右子树对称,左孩子的右子树是否和右孩子的左子树对称。

bool cmp(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 cmp(p->left,q->right)&&cmp(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root){
    if(root==NULL)return true;
    return cmp(root->left,root->right);
}

4.LeetCode572 另一棵树的子树

二叉树基础oj题自测
解题思路:
判断t是否为s的子树,需要判断t是否和s的某一个子树相同,所以此题就是判断两棵树是有相同的逻辑。

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);
}

bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
    if(root==NULL)return false;
    if(issametree(root,subRoot))return true;
    //与左树相同或与右树相同
    return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

5.牛客KY11 二叉树遍历

二叉树基础oj题自测

解题思路:
在先序遍历的过程中构建每一个节点,然后按中序遍历打印,先序遍历与中序遍历在上一篇博客中以详细讲解,本文不再赘述

#include <stdio.h>
//树的节点
struct TreeNode
{
    struct TreeNode* left;
    struct TreeNode* right;
    char val;
}node;
//先序遍历构建二叉树
struct TreeNode* createTree(char* a,int* pi)
{
    if(a[*pi]=='#')
    {
        (*pi)++;
        return NULL;
    }
    struct TreeNode* root=(struct TreeNode*)malloc(sizeof(struct TreeNode));
	//根节点的值
    root->val=a[(*pi)++];
    //左孩子
    root->left=createTree(a, pi);
    //右孩子
    root->right=createTree(a, pi);
    return root;
}
//中序遍历
void inorder(struct TreeNode* root)
{
    if(root==NULL)return ;
    inorder(root->left);
    printf("%c ",root->val);
    inorder(root->right);
}

int main() {
    char a[100];
    scanf("%s",a);
    int i=0;

    struct TreeNode* root=createTree(a,&i);
    inorder(root);
    return 0;
}

本文到此结束,码文不易,还请多多支持哦!文章来源地址https://www.toymoban.com/news/detail-416667.html

到了这里,关于二叉树基础oj题自测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】单值二叉树 & 相同的树 & 翻转二叉树(五)

      目录 一,单值二叉树 题目详情: 解法:父子比较法 解题思路: 思路实现: 源代码: 二,相同的树 题目详情: 解法:比较法 解题思路: 思路实现: 源代码: 三,翻转二叉树 解法:替换法 解题思路: 思路实现: 源代码: 题目详情: 如果 二叉树 每个节点都具有 相

    2024年02月07日
    浏览(68)
  • 二叉树基础oj题自测

    解题思路: 遍历二叉树,并且每一个节点值都和根节点的值进行比对,如果不等于根节点的值,则不是单值树。 解题思路: 首先比较根节点是否相同,然后分别比较左右子树是否相同。 解题思路: 判断一个树是否对称,首先要判断左右孩子是否对称相等,还需要判断左孩

    2023年04月17日
    浏览(35)
  • 二叉树OJ题目合集(单值、对称、平衡、构建加遍历)

    目录 前言: 一:单值二叉树 二:二叉树遍历 核心点 (1)前序 (2)中序 (3)后序 三:判断两颗树是否相同 四:判断二叉树是否对称 五:判断一颗树是否为另一颗树的子树 六:平衡二叉树 七:二叉树的构建加遍历 这一部分适合已经 适用于已经掌握二叉树基础的同学(遍历,求节

    2024年02月02日
    浏览(37)
  • 二叉树OJ题:LeetCode--101.对称二叉树

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第144道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通 LeetCo

    2024年02月13日
    浏览(49)
  • 二叉树OJ题:LeetCode--226.翻转二叉树

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第226道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通 LeetCo

    2024年02月11日
    浏览(44)
  • Leetcode-二叉树oj题

    144. 二叉树的前序遍历 https://leetcode.cn/problems/binary-tree-preorder-traversal/ 这个题目在遍历的基础上还要求返回数组,数组里面按前序存放二叉树节点的值。 既然要返回数组,就必然要malloc一块空间,那么我们需要算出这个二叉树的节点个数,所以就创建一个函数TreeSize求出节点

    2024年02月05日
    浏览(37)
  • 二叉树OJ题:LeetCode--104.二叉树的最大深度

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第104道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通  Leet

    2024年02月11日
    浏览(83)
  • 二叉树OJ题:LeetCode--144.二叉树的前序遍历

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第144道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通  Leet

    2024年02月13日
    浏览(41)
  • 二叉树OJ题:LeetCode--100.相同的树

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第100道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通 LeetCo

    2024年02月11日
    浏览(36)
  • 【LeetCode】——链式二叉树经典OJ题详解

     ========================================================================= 主页点击直达: 个人主页 我的小仓库: 代码仓库 C语言偷着笑: C语言专栏 数据结构挨打小记: 初阶数据结构专栏 Linux被操作记: Linux专栏 LeetCode刷题掉发记: LeetCode刷题 算法头疼记: 算法专栏  =====================

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包