Invert Binary Tree

Invert a binary tree.

     4

   /   \

  2     7

 / \   / \

1   3 6   9

to

     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 fuck off.
 1 /**

 2  * Definition for a binary tree node.

 3  * struct TreeNode {

 4  *     int val;

 5  *     TreeNode *left;

 6  *     TreeNode *right;

 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}

 8  * };

 9  */

10 class Solution {

11 public:

12     TreeNode* invertTree(TreeNode* root) {

13         queue <TreeNode* > tree;

14         if(root==NULL)

15           return NULL;

16         tree.push(root);

17         while(!tree.empty())

18         {

19             TreeNode* tmpnode = tree.front();

20             tree.pop();

21             TreeNode* left=tmpnode->left;

22             tmpnode->left=tmpnode->right;

23             tmpnode->right=left;

24             if(tmpnode->left)

25               tree.push(tmpnode->left);

26             if(tmpnode->right)

27               tree.push(tmpnode->right);

28         }

29         return root;

30     }

31 };

 

你可能感兴趣的:(binary)