leetcod熱題—226.翻轉二叉樹
阿新 • • 發佈:2021-02-03
題目:
翻轉一棵二叉樹。
思路:
解答:
法一:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return root
stack=[root]
while stack:
cur=stack.pop()
if cur.left:
stack.append(cur.left)
if cur.right:
stack.append(cur.right)
cur.left,cur.right=cur.right,cur. left
return root
法二:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return None
def dfs(root):
if not root:
return
root.left, root.right = root.right, root.left
dfs(root.left)
dfs(root.right)
dfs(root)
return root