当前位置: 首页 > news >正文

c语言-数据结构-二叉树OJ之子树与二叉树的构建

二叉树OJ补充

  • 前言
  • 一、另一棵树的子树
  • 二、二叉树的构建及遍历


前言

二叉树OJ


一、另一棵树的子树

题目链接:https://leetcode.cn/problems/subtree-of-another-tree/description/
在这里插入图片描述

在这里插入图片描述
通过两个示例我们可以看到,子树要求叶子节点也要一模一样,不允许出现根节点和叶节点之间有一棵subRoot树的情况,如示例2

那么本题,我们依然可以沿顺相同树的思路,subRoot是root的子树,不就代表subRoot包含于root吗,那么我们将root中的每一个节点都和root的根节点进行比较,值相同就同时往下走,不同就只走root,最后判断是否存在即可

代码如下:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool isSameTree(struct TreeNode* p,struct TreeNode* q)
{if(p == NULL && q == NULL){return true;}else if(p == NULL){return false;}else if(q == NULL){return false;}else 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);
}

二、二叉树的构建及遍历

题目链接:https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId=60&&tqId=29483&rp=1&ru=/activity/oj&qru=/ta/tsing-kaoyan/question-ranking
在这里插入图片描述
本题我们需要先根据它给出前序遍历字符串构建出一个完整的二叉树

前序遍历的顺序是根左子树右子树,构建二叉树还是较为简单的

代码如下:

#include <stdbool.h>
#include <stdio.h>
#include<stdlib.h>
typedef char TreeDataType;
typedef struct TreeNode
{struct TreeNode* left;struct TreeNode* right;TreeDataType val;
}TreeNode;
TreeNode* SetTree(TreeDataType* a,int* pi)
{if(a[(*pi)] == '#'){(*pi)++;return NULL;}TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));root->val = a[(*pi)++];root->left = SetTree(a,pi);root->right = SetTree(a,pi);return root;
}
void InOrder(TreeNode* root)
{if(root == NULL){return;}InOrder(root->left);printf("%c ",root->val);InOrder(root->right);
}
int main() {TreeDataType* a;a = (TreeDataType*)malloc(sizeof(TreeDataType) * 100);scanf("%s",a);int i = 0;TreeNode* root = SetTree(a,&i);InOrder(root);return 0;
}
http://www.lryc.cn/news/603538.html

相关文章:

  • QT项目 -仿QQ音乐的音乐播放器(第三节)
  • 电脑没有声音了怎么恢复 快速解决音频故障
  • 预装Windows 11系统的新电脑怎么跳过联网验机
  • Wndows Docker Desktop-Unexpected WSL error
  • Docker初学者需要了解的几个知识点(三)
  • docker 重新安裝
  • 小杰数据结构(one day)——心若安,便是晴天;心若乱,便是阴天。
  • 数据结构 排序(2)---选择排序
  • RK3568下的进程间广播通信:用C语言构建简单的中心服务器
  • 【WRF工具】服务器中安装编译GrADS
  • 信创国产Linux操作系统汇总:从桌面到服务器,百花齐放
  • 聚铭安全管家平台2.0实战解码 | 安服篇(三):配置保障 自动核查
  • mapbox进阶,mapbox-gl-draw绘图插件扩展,编辑模式支持点、线、面的捕捉
  • Android系统开发 在Android10版本的Framework中添加系统服务
  • Kafka——Kafka控制器
  • Note3: CNN(卷积神经网络)
  • 八股训练营 40 天心得:一场结束,也是一场新的开始
  • OpenCV 学习探秘之四:从角点检测,SIFT/SURF/ORB特征提取,目标检测与识别,Haar级联分类人脸检测,再到机器学习等接口的全面实战应用与解析
  • 【第四章:大模型(LLM)】01.神经网络中的 NLP-(3)文本情感分类实战
  • 嵌入式中间件-uorb解析
  • 基于深度学习的医学图像分析:使用Capsule Networks实现医学图像分类
  • vscode开发微信小程序
  • 01 基于sklearn的机械学习-机械学习的分类、sklearn的安装、sklearn数据集、数据集的划分、特征工程中特征提取与无量纲化
  • (四十三)深度解析领域特定语言(DSL)第七章——语法分析器组合子(Parser Combinators)
  • 传统数据库连接已OUT!飞算JavaAI开启Java开发智能新潮流
  • 【C++算法】78.BFS解决FloodFill算法_算法简介
  • 两数之和(每天刷力扣hot100系列)
  • ubuntu 25.04 自带JS引擎gjs运行GTK with JavaScript 应用
  • TensorFlow深度学习实战——基于卷积神经网络进行情感分析
  • vue请求golang后端CORS跨域问题深度踩坑