Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言每日一题(53)翻转二叉树

C语言每日一题(53)翻转二叉树

作者头像
对编程一片赤诚的小吴
发布于 2024-02-11 00:56:25
发布于 2024-02-11 00:56:25
12700
代码可运行
举报
运行总次数:0
代码可运行

力扣网 226 翻转二叉树

题目描述

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

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:root = []
输出:[]

提示:

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

涉及知识点 二叉树、递归

思路分析

从叶子节点开始翻转,翻转时,保留左右孩子结点,进行交换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
struct TreeNode* invertTree(struct TreeNode* root) {
    if (root == NULL) {
        return NULL;
    }
    struct TreeNode* left = invertTree(root->left);
    struct TreeNode* right = invertTree(root->right);
    root->left = right;
    root->right = left;
    return root;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言每日一题(54)对称二叉树
和相同二叉树是一个道理,但判断相同的不是两颗子树对应的左右结点,而是将两颗子树的左右结点交错进行判断,即左孩子与右孩子判断,右孩子和左孩子判断
对编程一片赤诚的小吴
2024/02/12
1290
C语言每日一题(54)对称二叉树
C语言每日一题(50)二叉树的最大深度
基于递归的思想,从根结点开始,找出左右子树的最大值并返回,同时加上1(根节点本身)就是二叉树的最大深度
对编程一片赤诚的小吴
2024/02/08
1550
C语言每日一题(50)二叉树的最大深度
二叉树及leetcode练习题
二叉树 二叉树天然的递归结构 二叉树本身就是一个递归的定义。先来看一下递归的前序遍历: void preorder(TreeNode* node) { if (node) { cout<<node->val; preorder(node->left); prorder(node->right); } } 递归的定义:递归终止条件 + 递归过程 前序遍历 void preorder(TreeNode* node) { // 递归终止条件 if(node == NU
宇宙之一粟
2020/10/26
3120
LeetCode-二叉树OJ题
先判断这棵树是否为空,如果是空树则是true。再判断左子树是否为空,并且左子树的值val和当前节点的val不相同,如果这左子树不为空且val不等于root的val则返回false,再使用相同方式判断右子树。最后递归一下左右子树即可,只有左右子树有一个返回false,则整体返回false。
用户10923087
2024/01/23
1240
LeetCode-二叉树OJ题
相同的树 单值二叉树 二叉树的最大深度
输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2:
南桥
2024/01/26
1050
相同的树 单值二叉树 二叉树的最大深度
力扣226:翻转二叉树
输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2:
南桥
2024/01/26
1210
力扣226:翻转二叉树
翻转二叉树(C++)
对应我的掘金文章:https://juejin.cn/post/7147267605059862541
GeekLiHua
2025/01/21
600
翻转二叉树(C++)
[LeetCode]—— 226——翻转二叉树
一开始翻转第二层的,他们的子树跟着过去,相当于翻转下一层的一半,就像一个数组,我们对其进行二分翻转,第一次找到中间位置,把数组分为两个部分,然后翻转,之后把左右部分接着在里面分成两个部分,对应着左右子树,翻转,直至翻转到最后只有两个元素组成的部分,翻转结束
小李很执着
2024/06/15
1050
[LeetCode]—— 226——翻转二叉树
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
YoungMLet
2024/03/01
980
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。
恬静的小魔龙
2022/09/27
4340
☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析
相同的树、对称二叉树、翻转二叉树
JavaScript实现LeetCode第100题:相同的树 JavaScript实现LeetCode第101题:对称二叉树 JavaScript实现LeetCode第226题:翻转二叉树 这几道题其实很相似,所以可以放在一起理解。 相同的树 题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3
木子星兮
2020/07/17
4690
相同的树、对称二叉树、翻转二叉树
C语言每日一题(56)平衡二叉树
找出左右子树的高度,如果高度差出现大于一的情况就返回false,从根节点开始,先从左子树找,再去右子树找
对编程一片赤诚的小吴
2024/02/14
1210
C语言每日一题(56)平衡二叉树
【算法专题】二叉树中的深搜(DFS)
深度优先遍历(DFS,全称为 Depth First Traversal),是我们树或者图这样的数据结构中常用的⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分支,直到一条路径上的所有节点都被遍历完毕,然后再回溯到上一层,继续找⼀条路遍历。
YoungMLet
2024/03/01
2980
翻转二叉树
本题是经典的二叉树操作的题目,直接从根节点进行递归遍历,并从叶子节点进行翻转,如果当前遍历到root,那么只需要继续交换两棵子树的位置即可完成翻转,首先判断节点是否存在,不存在则直接返回空节点,之后递归左子树以及右子树之后定义一个解构赋值的操作(ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值),将左子树与右子树交换位置,类似于后续递归遍历,由于不断进行递归操作整体是由叶节点开始进行交换的,最后返回根节点即可。
WindRunnerMax
2020/09/18
3550
【数据结构与算法 经典例题】翻转二叉树
倔强的石头_
2024/12/06
1110
【数据结构与算法 经典例题】翻转二叉树
LeetCode每日一题:翻转二叉树
通过观察,我们发现只要把二叉树上的每一个节点的左右子节点进行交换,最后的结果就是完全翻转之后的二叉树。
墨明棋妙27
2022/09/23
1810
二叉树的递归遍历
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
早起的鸟儿有虫吃
2019/05/05
5770
二叉树的递归遍历
C语言每日一题(57)二叉树的最小深度
首先理解,最小深度是从根节点到最近叶子节点的最短路径上的节点数量。那我们可以设置这样的递归规则:
对编程一片赤诚的小吴
2024/02/18
1170
C语言每日一题(57)二叉树的最小深度
leecode刷题(24)-- 翻转二叉树
二叉树问题,我们首先要想到的使用递归的方式来解决,有了这个思路,处理这道问题就很简单了:先互换根节点的左右节点,然后递归地处理左子树,再递归地处理右子树,直到所有的节点互换完,最后我们把 root 返回,这样便完成了二叉树的反转。
希希里之海
2019/05/14
4470
LeetCode-226-翻转二叉树
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
benym
2022/07/14
1700
相关推荐
C语言每日一题(54)对称二叉树
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验