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

力扣刷题笔记——二叉树

首先定义二叉树节点的结构体

struct TreeNode{TreeNode* left;TreeNode* right;int val;TreeNode():val(0),left(nullptr),right(nullptr){}TreeNode(int val):val(val),left(nullptr),right(nullptr){}TreeNode(int val,TreeNode* l,TreeNode* R):val(val),left(l),right(R){}
}

上手一道二叉树的翻转:

很明显,(🐂)需要使用递归来完成这道题目,递归不好理解,但下面的方案还是很好理解的,这道题有两种方式,从上到下(❀就是从根节点到叶子节点),或者是从下到上(同理可得)

那么我们开始分析:要反转树,两个方式(交换值或者交换节点指针),交换值就是书的结构不变,改变节点处的值,节点就是改变节点的指向的位置,原理一样,大家都用节点,开用

TreeNode* invertTree(TreeNode* root) {if(root==nullptr) return root;TreeNode* temp=root->left;root->left=root->right;root->right=temp;invertTree(root->left);invertTree(root->right);return root;
}

很简单一看就懂,先交换左右子树,然后依次交换左右子树的左右子树,反反复复,over

从下到上的意思,你左右子树都交换过了,那么直接交换左右子树不就行了。

上代码:

    TreeNode* invertTree(TreeNode* root) {if(root==nullptr) return root;TreeNode* left=invertTree(root->left);TreeNode* right=invertTree(root->right);root->left=root->right;root->right=left;return root;}

比第一种解法少了一行,但是理解没有第一个快。

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

相关文章:

  • 【华为OD机试】工号不够用了怎么办?(python, java, c++, js)
  • 【leetcode】198. 打家劫舍
  • 【react全家桶学习】react的 (新/旧) 生命周期(重点)
  • Gradio私网和公网的使用
  • ant design vue 配置菜单外部打开
  • YOLOv5/v7 添加注意力机制,30多种模块分析⑦,CCN模块,GAMAttention模块
  • IDEA下Logback.xml自动提示功能配置
  • CUDA编程模型系列八(原子操作 / 规约 / 向量元素求和)
  • go语言系列基础教程总结(4)
  • 网络基础一:网络协议初识与网络传输基本流程
  • Mysql找出执行慢的SQL【慢查询日志使用与分析】
  • 设计模式3:单例模式:JMM与volatile和synchronized的关系
  • 一个简单的OPC UA/ModbusTCP 网关(Python)
  • 线性代数行列式的几何含义
  • python用flask将视频显示在网页上
  • 【数据挖掘】时间序列教程【一】
  • 优化索引粒度参数提升ClickHouse查询性能
  • selenium\webdriver\remote\errorhandler.py:242: SessionNotCreatedException问题解决
  • MySQL 备份与恢复
  • js中改变this指向的三种方式
  • 小程序中如何进行数据传递和通信
  • Vue3项目中引入ElementUI使用详解
  • 计算机启动
  • Unity学习笔记--EventSystem事件系统在使用上需要注意的地方(很基础,但是很多人会忘记!!!)
  • 高手必备:JVM调优的常用命令和参数一网打尽!
  • Uniapp 开发 ①(快速上手)
  • 【数据库原理与实践】知识点归纳(下)
  • 代码随想录day34
  • CSS知识点汇总(八)--Flexbox
  • ASCII、Unicode、UTF-8、GBK