Leetcode Note: Invert Binary Tree
I. Description
Invert a binary tree.
4 / \ 2 7 / \ / \1 3 6 9
To
4 / \ 7 2 / \ / \9 6 3 1
Trivia:
This problem was too red 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 fuck off.
Ii. Question Analysis
The intention of the question is obvious, that is, to flip a binary tree. The following is a few words, which roughly mean:
Google: 90% of our engineers are using the software you wrote (Homebrew ?), But you don't actually flip a binary tree on the whiteboard.
This is a question that any programmer should answer. recursive or queue iteration solutions can be implemented without further repeat.
Iii. Sample Code
// C ++, recursive/*** Definition for a binary tree node. * struct TreeNode {* int val; * TreeNode * left; * TreeNode * right; * TreeNode (int x): val (x), left (NULL), right (NULL) {} *}; */class Solution {public: TreeNode * invertTree (TreeNode * root) {if (root = NULL) return root; TreeNode * temp = root-> left; root-> left = root-> right; root-> right = temp; invertTree (root-> left); invertTree (root-> right); return root ;}};
# Python, recursion # Definition for a binary tree node. # class TreeNode: # def _ init _ (self, x): # self. val = x # self. left = None # self. right = Noneclass Solution (object): def invertTree (self, root): "": type root: TreeNode: rtype: TreeNode "if root is None: return None root. left, root. right = root. right, root. left self. invertTree (root. left) self. invertTree (root. right) return root
Iv. Summary
This question is intended to help us review the basics of the data structure.