剑指offer27-二叉树的镜像
这个题目比较简单,思路就是依次遍历二叉树的各个节点并交换左右子树。这里复习一下遍历二叉树的三种思路:递归、栈(先序遍历)、队列(层次遍历)
递归
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: if not root: return root root.left,root.right=self.mirrorTree(root.right),self.mirrorTree(root.left) return root
辅助栈
class Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: if not root: return root s=[root] while len(s): t=s.pop() if t.left: s.append(t.left) if t.right: s.append(t.right) t.left,t.right=t.right,t.left return root
队列
class Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: if not root: return root s=[root] while len(s): t=s.pop() if t.left: s.insert(0,t.left) if t.right: s.insert(0,t.right) t.left,t.right=t.right,t.left return root
下一篇:
汉诺塔问题(C语言实现)