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

38 翻转二叉树

翻转二叉树

    • 理解题意,翻转即每个结点的左右子树翻转/对调
    • 题解1 递归——自下而上
    • 题解2 迭代——自上而下

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

在这里插入图片描述
提示:

  • 树中节点数目范围在 [0, 100] 内
  • -100 <= Node.val <= 100

理解题意,翻转即每个结点的左右子树翻转/对调

题解1 递归——自下而上

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* invertTree(TreeNode* root) {if(! root) return nullptr;TreeNode* LEFT(nullptr), *RIGHT(nullptr);/** 递归思路:最后翻转的树 = 翻转后的左子树 + 翻转后的右子树有左子树,翻转左子树有右子树,翻转右子树每次翻转的步骤一致,所以符合递归思路**/if(root->left)LEFT = invertTree(root->left);if(root->right) RIGHT = invertTree(root->right);root->left = RIGHT;root->right = LEFT;return root;}
};

在这里插入图片描述

题解2 迭代——自上而下

class Solution {
public:TreeNode* invertTree(TreeNode* root) {if(! root) return nullptr;// 换成stack,按自上而下思路,逻辑一致queue<TreeNode*> Que;Que.push(root);while(Que.size()){TreeNode* tmp = Que.front();Que.pop();TreeNode* left = tmp->left;TreeNode* right = tmp->right;if(left) Que.push(left);if(right) Que.push(right);tmp->left = right;tmp->right = left;}return root;}
};

在这里插入图片描述

http://www.lryc.cn/news/180879.html

相关文章:

  • 数据结构-快速排序-C语言实现
  • 玩客云Armbian_23.08.0-trunk_Onecloud_bookworm_edge_6.4.14.burn配置
  • Nginx查找耗时的接口
  • C++ Primer 一 变量和基本类型
  • 实体行业数字化转型怎么做?线上线下相结合的新零售体系怎么做?
  • JAVA面经整理(5)
  • 【牛客网-面试必刷TOP101】二分查找题目
  • 【QT】自定义组件ui类添加到主ui界面方法
  • FFmpeg 多图片合成视频带字幕和音乐+特效(淡入淡出,圆圈黑色淡出)
  • 上网Tips: Linux截取动态效果图工具_byzanz
  • 下载盗版网站视频并将.ts视频文件合并
  • ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能
  • 【kubernetes】kubernetes中的调度
  • java读取csv文件或者java读取字符串,找出引号内容,采用正则表达式书写
  • 【寻找关键钥匙】python实现-附ChatGPT解析
  • 基于 QT 实现一个 Ikun 专属桌面宠物
  • 新闻报道的未来:自动化新闻生成与爬虫技术
  • C++ 并发编程实战 第八章 设计并发代码 二
  • list(链表)
  • 使用代理IP进行安全高效的竞争情报收集,为企业赢得竞争优势
  • 【数学知识】一些数学知识,以供学习
  • JKChangeCapture swift 版本的捕捉属性变化的工具
  • RISC-V 指令
  • [NOIP2011 提高组] 选择客栈
  • 桂院校园导航 静态项目 二次开发教程 1.2
  • private static final long serialVersionUID = 1L的作用是什么?
  • leetCode 122.买卖股票的最佳时机 II 贪心算法
  • 阿里云ACP知识点(三)
  • nmap 扫描内网IP, 系统, 端口
  • Llama2-Chinese项目:4-量化模型