1. 程式人生 > >[LeetCode] 226. Invert Binary Tree

[LeetCode] 226. Invert Binary Tree

#題目 Invert a binary tree.

Example:

Input:

 4

/ 2 7 / \ / 1 3 6 9 Output:

 4

/ 7 2 / \ / 9 6 3 1 Trivia: This problem was inspired by this original tweet by Max Howell:

Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so f*** off.

思路

遞迴,遞迴函式將傳輸節點的 左右子樹互換。

code

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

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

遞迴函式 的輸入是 結點,返回 已經將其左右子結點 交換的 結點。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution { public TreeNode invertTree(TreeNode root) { if(root == null) return null; TreeNode cleft = root.left; root.left = invertTree(root.right); root.right = invertTree(cleft); return root; } }