leedcode-翻转二叉树

自己写的:

复制代码
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
复制代码

 

posted @   Junior_bond  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示