1. 程式人生 > 實用技巧 >二叉樹的映象( 翻轉二叉樹)

二叉樹的映象( 翻轉二叉樹)

leetcode 226翻轉二叉樹(劍指offer.二叉樹的映象)

初級遞迴

1 class Solution:
2     def invertTree(self, root: TreeNode) -> TreeNode:
3         if not root:
4             return 
5         root.left,root.right=root.right,root.left
6         self.invertTree(root.left)
7         self.invertTree(root.right)
8         return
root

一行遞迴

1 class Solution:
2     def invertTree(self, root: TreeNode) -> TreeNode:
3         if not root:
4             return 
5         root.left,root.right=self.invertTree(root.right),self.invertTree(root.left)
6         return root

輔助棧

class Solution:
    def invertTree(self, root: TreeNode) 
-> TreeNode: if not root: return stack=[root] while stack: node=stack.pop() node.left,node.right=node.right,node.left if node.left: stack.append(node.left) if node.right: stack.append(node.right)
return root