LeetCode第226題翻轉二叉樹(Python)

LeetCode第226題翻轉二叉樹(Python)

題目描述

翻轉一棵二叉樹。

示例:

輸入: 
				 4
			   /   \
			  2     7
			 / \   / \
			1   3 6   9
輸出: 
合併後的樹:
			     4
			   /   \
			  7     2
			 / \   / \
			9   6 3   1          

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/invert-binary-tree/
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

解題方法和思路

遞歸翻轉

思路和合並二叉樹的思路非常相似,利用遞歸實現,要實現翻轉功能可以分爲一下幾步:

  1. 該節點不空則進行一下步驟,否則返回None
  2. 翻轉左子樹
  3. 翻轉右子樹
  4. 交換左右孩子節點
    核心代碼:
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def invertTree(self, root: TreeNode) -> TreeNode:
        if root is None:
            return None
        root.left ,root.right = self.invertTree(root.right),  self.invertTree(root.left)
        return root     
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def invertTree(self, root: TreeNode) -> TreeNode:
        if root is not None:
            root.left ,root.right = self.invertTree(root.right),  self.invertTree(root.left)
        return root
  

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章