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

代码随想录_226翻转二叉树、101对称二叉树

 leetcode 226. 翻转二叉树

​​​226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

输入:root = []
输出:[]

代码

// leetcode 226翻转二叉树
// 使用层序遍历的方法 依次翻转左右子树
class Solution {
public:
	TreeNode* invertTree(TreeNode* root) {
		if (root == nullptr)
		{
			return root;
		}
		queue<TreeNode*> treeQue;
		treeQue.push(root);
		TreeNode* cur;
		while (!treeQue.empty())
		{
			cur = treeQue.front();
			treeQue.pop();
			//先入队 再交换
			if (cur->left != nullptr)
			{
				treeQue.push(cur->left);
			}
			if (cur->right != nullptr)
			{
				treeQue.push(cur->right);
			}
			swap(cur->left, cur->right);
		}
		return root;
	}
};

leetcode101.对称二叉树 

101. 对称二叉树

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

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

代码

// 迭代
class Solution {
public:
	bool isSymmetric(TreeNode* root) {
		if (root == nullptr)
		{
			return true;
		}
		queue<TreeNode*> treeQue;
		treeQue.push(root->left); //确定顺序 先左后右
		treeQue.push(root->right);
		while (!treeQue.empty())
		{
			TreeNode* tmp1 = treeQue.front();
			treeQue.pop();
			TreeNode* tmp2 = treeQue.front();
			treeQue.pop();

			if (tmp1 == nullptr && tmp2 == nullptr)
			{
				continue;
			}
			if (tmp1 == nullptr || tmp2 == nullptr)
			{
				// 上一个if已经排除了都为空的情况
				return false;
			}
			if (tmp1->val != tmp2->val)
			{
				return false;
			}
			treeQue.push(tmp1->left);
			treeQue.push(tmp2->right);
			treeQue.push(tmp1->right);
			treeQue.push(tmp2->left);
		}
		return true;
	}
};


http://www.kler.cn/news/10497.html

相关文章:

  • item_search_img-按图搜索1688商品(拍立淘)接口的接入参数说明
  • 跟着AI学AI(2): 逻辑回归
  • Spring Cloud快速入门
  • 网络安全之入侵检测
  • NVIDIA- cuSPARSE(四)
  • 【Flutter进阶】聊一聊组件中的生命周期、状态管理及局部重绘
  • 数据优化 | CnOpenDataA股上市公司招聘数据
  • 关于合金电阻
  • vue项目用后端返回的文件流实现docx和pdf文件预览
  • Java 进阶(11) 线程安全
  • virtualbox如何配网
  • 含有分布式电源的三相不平衡配电网潮流计算【IEEE33节点】(Matlab代码实现)
  • 还不懂如何与AI高效交流?保姆级且全面的chatGPT提示词工程教程来啦!(一)基础篇
  • Webpack介绍和使用
  • 课前测5-超级密码
  • 【vue3】关于watch与computed的用法看这个就ok
  • mysql数据库审计(2)
  • 分布式事务处理常用手段及生产实践
  • java基础学习-6
  • 事务的ACID特性
  • 【Python入门第四十九天】Python丨NumPy 数组拆分
  • 【C++】哈希的应用 -- 布隆过滤器
  • C++标准库 -- 关联容器 (Primer C++ 第五版 · 阅读笔记)
  • 能够翻译文档的免费软件-免费翻译整个文档的软件
  • 第二次作业
  • Debezium同步之实时数据采集必备工具
  • C++ 实现 matlab 的 buttap 函数
  • 投放视频广告时,如何快速与第三方播放器兼容?
  • 每日一问-ChapGPT-20230416-中医基础-经络
  • Java设计模式之建造者模式(精髓版)