1. 程式人生 > >【LeetCode 簡單題】60-翻轉二叉樹

【LeetCode 簡單題】60-翻轉二叉樹

宣告:

今天是第60道題。翻轉一棵二叉樹。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除

(手動比心ღ( ´・ᴗ・` ))

正文

題目:翻轉一棵二叉樹。

示例:

輸入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9

輸出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

備註:
這個問題是受到 Max Howell 的 

原問題 啟發的 :

谷歌:我們90%的工程師使用您編寫的軟體(Homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。

解法1。用遞迴的方法,先交換左右子節點的值,然後遞迴呼叫,交換左右子節點的值,直到遍歷到空節點後返回。

執行用時: 24 ms, 在Invert Binary Tree的Python提交中擊敗了99.83% 的使用者。

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def invertTree(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if not root:
            return
        # 交換左右節點的值
        tmp = root.left
        root.left = root.right
        root.right = tmp
        
        # 交換完了當前節點的左右節點的值後,遞迴交換子節點的左右子節點的值
        self.invertTree(root.left)
        self.invertTree(root.right)
        
        # 交換完了,返回翻轉後的二叉樹
        return root
    

 解法2。有比解法1更簡潔的寫法,具體啥意思我也沒看懂。。。

執行用時: 24 ms, 在Invert Binary Tree的Python提交中擊敗了99.83% 的使用者。

class Solution(object):
    def invertTree(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if root:
            root.left, root.right = self.invertTree(root.right), self.invertTree(root.left)
            return root

  解法3。還有非遞迴的方法

執行用時: 24 ms, 在Invert Binary Tree的Python提交中擊敗了99.83% 的使用者。

class Solution(object):
    def invertTree(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        
        stack = [root]
        while stack:
            node = stack.pop()
            if node:
                node.left, node.right = node.right, node.left
                stack += node.left, node.right
        return root
        

結尾

解法1:LeetCode

解法2:https://blog.csdn.net/qq_34364995/article/details/80640477?utm_source=blogxgwz0

解法3:https://blog.csdn.net/wangyaninglm/article/details/46612367