首页 > 其他分享 >226. 翻转二叉树

226. 翻转二叉树

时间:2024-11-26 18:33:59浏览次数:5  
标签:right TreeNode nullptr 二叉树 226 left root 翻转

问题描述

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

法一、递归

单独递归函数,返回TreeNode* x,x是从当前层开始的逆转后的树的根结点

class Solution {
public:
    TreeNode* solve(TreeNode* root) {
        if (root == nullptr) {
            return nullptr;
        }
        TreeNode* t = root->left;
        root->left = solve(root->right);
        root->right = solve(t);
        return root;
    }
    TreeNode* invertTree(TreeNode* root) {
        TreeNode* res = solve(root);
        return res;        
    }
};

法二、队列

同二叉树的最大深度那题,可以使用队列配合for循环,对每个层的结点依次处理,交换其左右子树。

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        queue<TreeNode*> q;
        if(root == nullptr) {
            return nullptr;
        }
        q.push(root);
        while(!q.empty()) {
            int layer_size = q.size();
            for (int i = 0; i < layer_size; i++) {
                TreeNode* t = q.front();
                q.pop();
                // swap
                TreeNode* tmp = t->left;
                t->left = t->right;
                t->right = tmp;
                // push queue
                if (t->left != nullptr) {
                    q.push(t->left);
                }
                if (t->right != nullptr) {
                    q.push(t->right);
                }
            }
        }
        return root;
    }
};

标签:right,TreeNode,nullptr,二叉树,226,left,root,翻转
From: https://www.cnblogs.com/saulstavo/p/18570757

相关文章

  • 数据结构--AVL树(平衡二叉树)
     ✅博客主页:爆打维c-CSDN博客​​​​​​ ......
  • 104. 二叉树的最大深度
    问题描述给定一个二叉树root,返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。可以使用dfs和bfs两种方法针对树的层数进行遍历,并记录。递归方法可以用递归解决,比较简单,用递归函数的返回值承载答案,x表示从当前层到最深层的深度。classSo......
  • 94. 二叉树的中序遍历
    问题描述给定root,返回中序遍历,答案格式:classSolution{public:vector<int>inorderTraversal(TreeNode*root){}};则:将vector作为static或者全局变量,可以在该函数中实现递归;写另外一个函数专门用来递归;法一、使用另外的递归函数classSolution{......
  • 代码随想录算法训练营第十二天|二叉树理论基础|二叉树的递归遍历|二叉树的迭代遍历|二
    二叉树的理论基础二叉树的主要形式:        二叉树有两种主要的形式:满二叉树和完全二叉树;    满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。可以说深度为k,有2^k-1个节点的二叉树。       ......
  • 617. 合并二叉树 Golang实现
    题目描述:给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为null的节点将直接作......
  • STM32 通过STM32cubemx软件进行代码生成(led灯闪烁)并最后封装点亮、熄灭以及翻转灯函数
    第一步生成代码对hal生成的文件进行解释Core:核心->Inc:各种头文件->Src:各种源文件Drivers:驱动文件MDK:可以看到个keil各种文件项目路径hail.ioc,可以用来修改配置,工作日志和配置文件 第二步点击MDK-ARM可以看到keil文件,双击打开keil文件对其配置自动复位功......
  • 科普文:软件架构之Linux系列【linux内核数据结构:链表、队列、映射、二叉树】
    概叙科普文:软件架构之Linux系列【linux内核数据结构汇总】-CSDN博客Linux内核提供了许多复杂的数据结构,这些结构被广泛用于各种不同的目的,例如存储设备管理、内存管理、进程管理等。以下是一些常见的数据结构以及它们的简要描述:双向链表(list):实现链表的数据结构,每个节点都......
  • 代码随想录算法训练营第十三天| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    110.平衡二叉树题目链接:.-力扣(LeetCode)文章链接:代码随想录视频链接:后序遍历求高度,高度判断是否平衡|LeetCode:110.平衡二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com,这里刷题顺序,详......
  • 数据结构与算法——树与二叉树
    树与二叉树1.树的定义与相关概念树的示例:树的集合形式定义Tree=(K,R)元素集合:K={ki|0<=i<=n,n>=0,ki∈ElemType}(n为树中结点数,n=0则树为空,n>0则为非空树)对于一棵非空树,关系R满足下列条件:1.有且仅有一个结点没有前驱,称为根结点。2.处根结点外,其余每个结点有且仅有一个前......
  • SM2268XT2量产工具找到了,SM2268XT2量产工具下载,支持B58R闪存颗粒开卡,SM2268XT2开卡工
    前一阵买了一个固态硬盘,主控是SM2268XT2,闪存颗粒是B58R的,由于自己之前量产过SM2263XT主控,所以这次也想玩一下量产。找了半天,才发现这个主控目前还没有公开的SM2268XT2量产工具下载。就在快要放弃的时候,在网上查到量产部落发布了慧荣SM2268XT2主控支持YMTC_WDS闪存的量产工具,......