首页 > 其他分享 >剑指Offer 27. 二叉树的镜像

剑指Offer 27. 二叉树的镜像

时间:2023-08-27 17:22:57浏览次数:34  
标签:Right TreeNode Offer 27 二叉树 mirrorTree root Left

题目链接: 剑指Offer 27. 二叉树的镜像

题目描述:

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

解法思路:

此题本质上就是一个二叉树遍历的问题:在遍历的过程中,交换左右子树即可。

代码:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
//先序遍历
func mirrorTree(root *TreeNode) *TreeNode {
    if root == nil {
        return root
    }
    root.Left, root.Right = root.Right, root.Left
    mirrorTree(root.Left)
    mirrorTree(root.Right)
    return root
}

//后序遍历
func mirrorTree(root *TreeNode) *TreeNode {
if root == nil {
return root
}
l := mirrorTree(root.Left)
r := mirrorTree(root.Right)
root.Left, root.Right = r, l
return root
}

标签:Right,TreeNode,Offer,27,二叉树,mirrorTree,root,Left
From: https://www.cnblogs.com/lxing-go/p/17660519.html

相关文章

  • 剑指Offer 25. 合并两个排序的链表
    题目链接:剑指Offer25.合并两个排序的链表题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。解法思路:在两链表向后遍历的过程中,哪个更小一点,哪个先放在合并后的链表中。最后哪个链表剩余,直接接在合并链表的后面即可。代码:/***Definit......
  • 剑指Offer 22. 链表中倒数第k个节点
    题目链接:剑指Offer22.链表中倒数第k个节点题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。解法思路:快慢指针:慢指针不动,快指针先走k步,然后快慢指针一起向后走,当快指针走到末尾时,慢指针所指的就是倒......
  • 「算法与数据结构」梳理6大排序算法 为了offer!
    6种排序如下......
  • [刷题记录Day22]Leetcode二叉树
    No.1题目二叉搜索树的最近公共祖先思路递归法BST特性如何利用?在BST中,公共祖先一定在p、q数值范围的中间利用BST特性定向搜索注意递归遍历一条边和遍历整棵树的写法不同递归分析返回值:节点,参数:当前节点,p,q终止逻辑:发现当前节点为空,则直接返回当前节点;为什么不用判断p......
  • UE4.27, Packaging failed, "is found in memory and is an export but does not have
    打包时发生如下错误"isfoundinmemoryandisanexportbutdoesnothaveallloadflags"通过查阅论坛,问题原因出在,某类的构造函数里包含xxx->SetChildActorClass(ActualOne) 整理到的解决办法并未完全验证1,愿意手动设定ChildActorComponent的话,将原代码改为xxx->SetC......
  • [算法学习笔记][刷题笔记] 2023/8/26&8/27 解题报告状压 dp
    题单状压dp状压dp是一种非常暴力的算法,它直接记录不同的状态,通过状态进行转移。状压dp可以解决NP类问题。它的原理是暴力枚举每一种可能的状态。所以它的复杂度是指数级的。只能求解小范围的问题。关于记录状态:状压dp通过一个二进制串来记录状态。显然二进制串可以转......
  • 二叉树的链式存储结构 C++代码实现
    /*二叉树的链式存储结构*/#include<iostream>usingnamespacestd;/*二叉链表的定义*/typedefstructBiTNode{chardata;structBiTNode*lchild,*rchild;}BiTNode;typedefBiTNode*BiTree;//*************************************************......
  • 二叉树用顺序表实现 C++代码实现
    /*二叉树用顺序表实现*/#include<iostream>usingnamespacestd;/*完全二叉树顺序表的定义*/#defineMAX_BITREE_SIZE100typedefintSqBiTree[MAX_BITREE_SIZE];/*创建一个二叉树顺序表*/voidCreateBiTree(SqBiTree&T){inti;cout<<"输入元素个数:";......
  • 27面向对象(继承)
    动态方法与静态方法#动态方法1.绑定给对象的方法classStudent:defrun(self):prtin(self)#类调用绑定给对象的方法:有几个参数就需要传几个参数Student.run(123)#对象调用绑定给对象的方法:会自动将对象当做第一个参数传入......
  • NC20277 [SCOI2010]字符串
    题目链接题目题目描述lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗?输入描述输入数据是一......