首页 > 其他分享 >leedcode-翻转二叉树

leedcode-翻转二叉树

时间:2024-03-16 17:00:31浏览次数:18  
标签:TreeNode cur 反转 leedcode queue 二叉树 new 节点 翻转

自己写的:

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        # 创建一个新的 TreeNode 以存储反转后的树
        newroot = TreeNode()
        
        # 如果输入的根节点为空,则返回空
        if not root:
            return None
        
        # 将原始根节点的值复制到新根节点
        newroot.val = root.val
        
        # 创建队列以执行层次遍历
        queue = [root]  # 原始树的队列
        new_queue = [newroot]  # 反转后的新树的队列
        
        # 执行层次遍历
        while queue:
            # 处理原始树中的节点
            cur = queue.pop(0)  # 从原始树中出队当前节点
            new_cur = new_queue.pop(0)  # 从反转后的新树中出队相应的节点
            
            # 反转左右子节点
            if cur.left:
                # 如果原始树中的当前节点有左子节点,则将其入队,并在反转后的新树中创建相应的右子节点
                queue.append(cur.left)
                new_cur.right = TreeNode(cur.left.val)  # 在反转后的新树中创建相应的右子节点
                new_queue.append(new_cur.right)  # 将相应的右子节点入队
            if cur.right:
                # 如果原始树中的当前节点有右子节点,则将其入队,并在反转后的新树中创建相应的左子节点
                queue.append(cur.right)
                new_cur.left = TreeNode(cur.right.val)  # 在反转后的新树中创建相应的左子节点
                new_queue.append(new_cur.left)  # 将相应的左子节点入队
        
        # 返回反转后的新树的根节点
        return newroot

 

标签:TreeNode,cur,反转,leedcode,queue,二叉树,new,节点,翻转
From: https://www.cnblogs.com/yyyjw/p/18077287

相关文章

  • lc493 统计重要翻转对的数目
    给定一个数组nums[n],如果i<j并且nums[i]>2*nums[j],则称(i,j)是一个重要翻转对。求nums[n]中重要翻转对的数量。1<=n<=5e4;nums[i]在int范围内直接套平衡树模板即可。template<typenameTYPE>structTreap{structNode{TYPEdata,sum;intrnd,siz......
  • 二叉树的迭代遍历
    二叉树前后序遍历(迭代)#include<bits/stdc++.h>usingnamespacestd;structNode{intdata;Node*left;Node*right;Node(intvalue=0):data(value),left(nullptr),right(nullptr){}};Node*insertEle();voidpreorder(Node*pNode);voidmid......
  • 代码随想录 第21天 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ●
    leetcode:530.二叉搜索树的最小绝对差-力扣(LeetCode)思路:判断最小绝对差,肯定用中序遍历,双指针一前一后依次判断。classSolution{intresult=Integer.MAX_VALUE;TreeNodepre=null;publicintgetMinimumDifference(TreeNoderoot){if(root==......
  • 【leetcode】二叉树的前序遍历➕中序遍历➕后序遍历
    大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞......
  • 力扣刷题Days19-637.二叉树的层平均数
    目录1,题目2,代码2.1广度优先遍历2.2深度优先遍历3,学习与总结1,题目给定一个非空二叉树的根节点 root ,以数组的形式返回每一层节点的平均值。2,代码2.1广度优先遍历/***Definitionforabinarytreenode.*functionTreeNode(val,left,right){*......
  • 洛谷题单指南-二叉树-P1030 [NOIP2001 普及组] 求先序排列
    原题链接:https://www.luogu.com.cn/problem/P1030题意解读:已知中序、后序,求先序。解题思路:与洛谷题单指南-二叉树-P1827[USACO3.4]美国血统AmericanHeritage非常类似,不在介绍过程,直接给出代码。100分代码:#include<bits/stdc++.h>usingnamespacestd;stringin,post......
  • 二叉树的垂序遍历
    说在前面......
  • 数据结构之链式二叉树
    当我们初步了解二叉树后我们就可以进一步去深入学习二叉树了1.链式二叉树的遍历这里我们先去定义链式二叉树的结构分为两个指针一左一右他们分别指向左子树和右子树typedefintBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata; structBinartTreeNode......
  • leedcode-用队列实现栈
    利用内置的listclassMyStack:def__init__(self):#初始化一个空列表用于存储栈的元素self.li=list()defpush(self,x:int)->None:#向栈中压入元素xself.li.append(x)defpop(self)->int:#从栈顶弹......
  • 代码随想录算法训练营第七天|LeetCode 344.反转字符串、541.反转字符串II、卡码网54.替
    344.反转字符串题目描述:​编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用O(1)的额外空间解决这一问题。示例一:输入:s=["h","e","l","l","o"]输出:["o","l","l......