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 @ 2024-03-16 16:56  Junior_bond  阅读(7)  评论(0)    收藏  举报