LeetCode 226.翻转二叉树——Python实现(递归、迭代)

1、题目:翻转二叉树。就是一颗二叉树的所有子树都会发生左右翻转,所以这种情况用递归就可以实现

class Solution(object):
    def invertTree(self, root: TreeNode) -> int:
        if root is None:
            return root

        left_node = self.invertTree(root.left)
        right_node = self.invertTree(root.right)

        root.left = right_node
        root.right = left_node

        return root

2、 通过队列遍历实现二叉树的翻转

class Solution(object):
    def invertTree(self, root: TreeNode) -> int:
        if root is None:
            return root

        queue = [root]
        while queue:
            node = queue.pop(0)

            # 交换左右指针的指向
            temp_node = node.left
            node.left = node.right
            node.right = temp_node

            # 将节点加入队列,继续遍历翻转
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)

        return root

 

你可能感兴趣的:(数据结构与算法,数据结构与算法,LeetCode,二叉树,翻转二叉树)