数据结构——二叉树练习题

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

目录

单值二叉树 

相同的树 

另一棵树的子树

二叉树的前序遍历

 二叉树的构造及遍历


给大家推荐一款刷题,找工作的好网站——牛客网

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网

数据结构——二叉树练习题

 

单值二叉树 

数据结构——二叉树练习题

思路:根节点跟左子树比较,若相等则继续比,一值比到左子树为空,比完之后再跟右子树比较


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

相同的树 

数据结构——二叉树练习题

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    if(p==NULL&&q==NULL)
    return true; //如果都为空则返回真
    if(p==NULL||q==NULL)
    return false; //一个为空,一个不为空,则false
    if(p->val!=q->val)
    return false;//不相等,fasle
    return isSameTree(p->left,q->left)&&isSameTree(q->right,p->right);//遍历后面的但要求左子树跟左子树比较,右子树跟右子树比较

}

另一棵树的子树

 数据结构——二叉树练习题

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(q->right,p->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);
}

二叉树的前序遍历

思路:1.先统计出该二叉树节点的个数

            2.创建一个新的数组,数组大小为二叉树总结点大小

            3.进行前序遍历根,左,右

int TreeSize(struct TreeNode* root)
{
    if(root==NULL)
    return 0;
    return TreeSize(root->left)+TreeSize(root->right)+1;
} //统计个数
 void preorder(struct TreeNode* root,int *a,int *pi)
 {
     if(root==NULL)
     return;
    a[*pi]=root->val;
    (*pi)++;
    preorder(root->left,a,pi);
     preorder(root->right,a,pi);
 }//遍历
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* preorderTraversal(struct TreeNode* root, int* returnSize){
 int n=TreeSize(root);
 int *a=(int*)malloc(sizeof(int)*n);
 int i=0;
 preorder(root,a,&i);
 *returnSize=n;
 return a;
}

 二叉树的构造及遍历

 二叉树遍历_牛客题霸_牛客网 (nowcoder.com)

1.建立一个数组,给数组输入数据,#代表NULL

2.构建一个二叉树,把数组的值输按前序遍历输入到二叉树中,当遇到#时,代表该节点为空

3.将前序遍历好的二叉树,进行中序遍历

数据结构——二叉树练习题数据结构——二叉树练习题文章来源地址https://www.toymoban.com/news/detail-515207.html

#include<stdio.h>
#include<stdlib.h>
typedef char Datatypedef;
typedef struct BinaryTreeNode
{
    Datatypedef data;
    struct BinaryTreeNode* left;
    struct BinaryTreeNode* right;
}TreeNode;//定义二叉树

TreeNode* CreateTree(char* arr, int* pi)
{
    if (arr[*pi] == '#')
    {
        (*pi)++;
        return NULL;
    }
    TreeNode* tmp = (TreeNode*)malloc(sizeof(TreeNode));
    tmp->data = arr[*pi];
    (*pi)++;
    tmp->left = CreateTree(arr, pi);
    tmp->right = CreateTree(arr, pi);
    return tmp;
}//创建二叉树,并把数组的值赋值给二叉树,按前序遍历赋值

void InorDer(TreeNode* tmp)
{
    if (tmp == NULL)
        return;
    InorDer(tmp->left);
    printf("%c ", tmp->data);

    InorDer(tmp->right);
}//前序遍历换为中序遍历

int main()
{
    char arr[100];
    scanf("%s", arr);
    int i = 0;
    TreeNode* root = CreateTree(arr, &i);
    InorDer(root);
    return 0;
}

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

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

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

相关文章

  • 【数据结构(四)】链表经典练习题

    ❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵 关注我带你学更多数据结构知识 在上一篇文章中博主已经介绍了链表的基础知识,什么是链表,如何实现一个链表,以及LinkedList的操作方法,那么在这篇文章中通过一些链

    2024年04月22日
    浏览(45)
  • 【数据结构】“单链表”的练习题(二)

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 前言: 最近在刷题的

    2024年02月13日
    浏览(47)
  • 数据结构与算法系列之习题练习

    💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 括号匹配问题。 用队列实现栈。 用栈实现队列。 设计循环队列。 有效的括号 //用栈来实现 //左括号进栈 右括号出栈并销毁如果不匹配则return //设置两个队列,入栈

    2024年02月11日
    浏览(46)
  • 数据结构与算法--图(概念+练习题+解析)

    有向图 在有向图中有以下几点结论: 1.所有顶点的度数之和等于边数的二倍。 2.所有顶点的入度之和等于出度之和。 3.n个顶点的有向完全图有n(n-1)条边。 4.n个顶点的强连通图至少有n条边。 无向图 在无向图中有以下几点结论: 1.所有顶点的度数之和等于边数的二倍。 2.n个顶

    2024年02月04日
    浏览(45)
  • 二叉树OJ练习题(C语言版)

    目录  一、相同的树  二、单值二叉树  三、对称二叉树  四、树的遍历 前序遍历 中序遍历 后序遍历  五、另一颗树的子树  六、二叉树的遍历  七、翻转二叉树  八、平衡二叉树 链接:100. 相同的树 - 力扣(LeetCode) 首先考虑比较时节点为空的情况,当比较到二者节点都

    2024年02月19日
    浏览(37)
  • 【数据结构】顺序表详解(附leetcode练习题)

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺

    2023年04月27日
    浏览(48)
  • 【数据结构】时间复杂度---OJ练习题

    目录 🌴时间复杂度练习 📌面试题---消失的数字 题目描述 题目链接:面试题 17.04. 消失的数字 🌴解题思路 📌思路1: malloc函数用法  📌思路2: 📌思路3: 🙊 如果有不了解时间复杂度的请移步上一篇文章:【数据结构】初识 题目描述 数组 nums 包含从 0 到 n 的所有整数,

    2024年02月16日
    浏览(41)
  • 数据结构之链表练习与习题详细解析

    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题       数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.习题解析 2.1习题一 2.2习题二 2.3习题三 2.4习题四 2.

    2024年02月05日
    浏览(45)
  • 每天一道算法练习题--Day15 && 第一章 --算法专题 --- -----------二叉树的遍历

    二叉树作为一个基础的数据结构,遍历算法作为一个基础的算法,两者结合当然是经典的组合了。很多题目都会有 ta 的身影,有直接问二叉树的遍历的,有间接问的。比如要你找到树中满足条件的节点,就是间接考察树的遍历,因为你要找到树中满足条件的点,就需要进行遍

    2024年02月01日
    浏览(48)
  • 【数据结构】 算法的时间复杂度和空间复杂度 (上)(附leetcode练习题)

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 如何衡量一个算法的好坏呢?比如对于以下斐波那契数列: 斐波那契数列的递归实现方式非常简洁,但简洁一定好吗?那该如何

    2023年04月14日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包