首页 > 其他分享 >LeetCode刷题记录|LeetCode热题100|226.翻转二叉树(easy)

LeetCode刷题记录|LeetCode热题100|226.翻转二叉树(easy)

时间:2023-05-05 22:11:39浏览次数:47  
标签:right TreeNode struct invertTree 二叉树 easy root LeetCode left

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

 

思路与算法:从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root 的左右两棵子树都已经翻转,只需交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。

时间复杂度:O(n)

空间复杂度:O(n)
代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
struct TreeNode* invertTree(struct TreeNode* root){ if(!root) return NULL; struct TreeNode* right, * left; right = invertTree(root->right); left = invertTree(root->left); root->right = left; root->left = right; return root; }

示例代码:

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

标签:right,TreeNode,struct,invertTree,二叉树,easy,root,LeetCode,left
From: https://www.cnblogs.com/elm-and-star/p/17375519.html

相关文章

  • 第五章 5.2.2 二叉树的常用性质
    叶子结点数量比度为2的结点多一个树的结点数量=总度数+1层的最多结点数高度一定的二叉树最多节点数量完全二叉树的性质......
  • easy es 避坑指南
    为了让每位用户(尤其是小白)尽量避免踩坑,节省更多时间,特此总结一篇避坑指南,在正式使用EE之前,不妨花三五分钟学习一下,可以帮各位在使用中避免踩坑,从而节省大量时间.遇到问题尽量先从使用角度是否规范,版本是否兼容去下手,我们已提供的API都是有测试用例覆盖,单测覆盖率高达9......
  • [2019红帽杯]easyRE 1
    查壳:64位,进IDA找主函数:挺长的,慢慢来吧,先找正确的判断输出:涉及到了v11,又涉及到到方法sub_400E44,跟进方法看看:出现位运算,和aAbcdefghijklmn,跟进看看:标准base64编码,那就是说v11是根据v18base64加密了10次得到的,我们再看看,sub_400360的另一个参数off_6CC090,跟进:拿这个去解密......
  • LeetCode 206. 反转链表
    题目链接:LeetCode206.反转链表本题是链表题目中非常重要的一道题目--反转指针。解题方法有两种:1.双指针法2.递归法首先看双指针法:快指针总是在慢指针的前面,也就是每次将快指针的节点的next指针更新成指向慢指针,这样不就进行了反转嘛。完整代码如下:funcreverseList(hea......
  • 二叉树的先序、中序、后序的遍历
    二叉树遍历的思想:1.先序遍历 先序遍历二叉树的过程是: (1)访问根节点; (2)先序遍历左子树; (3)先序遍历右子树。 2.中序遍历 中序遍历二叉树的过程是: (1)中序遍历左子树; (2)访问根节点; (3)中序遍历右子树。 3.后序遍历 后序遍历二叉树的过程是: (1)先序遍历左子树;......
  • 二叉树的建立
    二叉树的创建typedefstructnode{ElemTypedata;structnode*lchild;//指向左孩子的节点structnode*rchild;//指向右孩子的节点}BTNode;#include"btree.h"voidCreateBTNode(BTNode*&b,char*str){BTNode*St[MaxSize],*p;inttop=-1,k,j=0;......
  • [Leetcode] 0705. 设计哈希集合
    705.设计哈希集合EnglishVersion题目描述不使用任何内建的哈希表库设计一个哈希集合(HashSet)。实现MyHashSet类:voidadd(key)向哈希集合中插入值key。boolcontains(key)返回哈希集合中是否存在这个值key。voidremove(key)将给定值key从哈希集合中删除。如果......
  • LeetCode 203. 移除链表元素
    题目链接:LeetCode203.移除链表元素本题是一个经典的单链表删除元素的题目,主要注意的有两点:如果删除的元素是不是头元素,则直接p.Next=p.Next.Next即可如果删除的元素是头元素,则需要进行单独的处理forhead!=nil&&head.Val==val{head=head.Next}ifh......
  • LeetCode 59. 螺旋矩阵 II
    题目链接:LeetCode59.螺旋矩阵II本题不涉及算法,只是简单的模拟,但是由于边界条件比较多,因此容易出错。分析题干:题目要求按照右、下、左、上、这样的顺序对数组进行填充,填充的值为1~n*n,因此问题的关键就是找到待填充的位置,将其值赋值为i即可。由于填充的顺序是有规律的,因......
  • LeetCode 209. 长度最小的子数组
    题目链接:LeetCode209.长度最小的子数组本题是一个滑动窗口的题,所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。在本题中实现滑动窗口,主要确定如下三点:窗口内是什么?窗口就是满足其和≥target的长度最小的连续子数组。如何移动窗口的起......