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

【数据结构】_二叉树基础OJ

目录

1. 单值二叉树

1.1 题目链接与描述

1.2 解题思路

1.3 程序

2. 相同的树

2.1 题目链接与描述

2.2 解题思路

2.3 程序

3. 对称二叉树

3.1 题目链接与描述

3.2 解题思路

3.3 程序


1. 单值二叉树

1.1 题目链接与描述

题目链接:

965. 单值二叉树 - 力扣(LeetCode)

题目描述:

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false

1.2 解题思路

思路1:遍历法,遍历二叉树进行值的对比,若全部值相同则返回true,否则返回false;

思路2:分治法:

如果二叉树为空,则返回true;

如果二叉树非空,则依次将当前根结点的值与左右孩子结点的值进行比较,不等则返回false;

1.3 程序

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
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. 相同的树

2.1 题目链接与描述

题目链接:

100. 相同的树 - 力扣(LeetCode)

题目描述:

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

2.2 解题思路

分治思想,两棵树的根与根相比,左子树与左子树比较,右子树与右子树比较,对于每一棵子树,仍然采用根、左子树、右子树的顺序进行比较。

2.3 程序

/*** 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;// 一个为空一个不为空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 题目链接与描述

题目链接:

101. 对称二叉树 - 力扣(LeetCode)

题目描述:

给你一个二叉树的根节点 root , 检查它是否轴对称。

3.2 解题思路

除根结点外,从第二层子树开始,根与根比较,一个根结点的左子树与另一个根结点的右子树比较,一个根结点的右子树与另一个根结点的左子树比较。

与第二题思路类似,为了更方便实现两棵子树的对称比较,再封装一个函数isSubSymmic,将第二层的两个结点指针作为参数传递给该函数。

3.3 程序

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool isSubSymmetric(struct TreeNode* leftTreeNode,struct TreeNode* rightTreeNode){if (leftTreeNode == NULL && rightTreeNode == NULL)return true;if (leftTreeNode == NULL || rightTreeNode == NULL)return false;if (leftTreeNode->val != rightTreeNode->val)return false;return isSubSymmetric(leftTreeNode->left, rightTreeNode->right)&&isSubSymmetric(leftTreeNode->right, rightTreeNode->left);
}
bool isSymmetric(struct TreeNode* root) {if (root == NULL)return true;return isSubSymmetric(root->left,root->right);
}

相关文章:

  • 数字孪生:为UI前端设计带来沉浸式交互新体验
  • 逆变器工作原理
  • 文章以及好用网站分享
  • Elasticsearch 索引文档的流程
  • WebSocket长连接在小程序中的实践:消息推送与断线重连机制设计
  • 移远 SC200L 与 贴片 SD 卡 MKDN064GIL-ZA:开启 T-BOX 智能网联新时代
  • spring-core 资源管理- Resource 接口讲解
  • 历史项目依赖库Bugfix技巧-类覆盖
  • 正则表达式详解:从基础到高级应用的全面指南
  • 【文件】Linux 内核优化实战 - fs.inotify.max_user_watches
  • 基本进程调度算法
  • 马斯克YC技术核弹全拆解:Neuralink信号编译器架构·星舰着陆AI代码·AGI防御协议(附可复现算法核心/开源替代方案/中国技术对标路径)
  • anchor 智能合约 IDL 调用
  • 【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere
  • 《汇编语言:基于X86处理器》第4章 数据传送、寻址和算术运算(1)
  • Python----OpenCV(图像増强——图像平滑、均值滤波、高斯滤波、中值滤波、双边滤波)
  • RealSense 相机 | 读取IMU | 解决权限问题 | 提供示例程序
  • 阿里云无影:开启云端办公娱乐新时代
  • Re:从零开始的地址映射基本分页存储管理方式(考研向)
  • 设计模式 - 抽象工厂
  • 网站建设一般满足什么需求/wordpress企业网站模板
  • 北京海淀月嫂家政公司/优化设计电子版
  • 自己做的网站加载慢/百度24小时人工客服
  • 昆明排名推广/百度seo排名工具
  • 小程序定制开发中软/抖音seo教程
  • .net商城网站开发/百度seo推广