Invert Binary Tree - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Friday, 14 August 2020

Invert Binary Tree

 
Invert Binary Tree
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.

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 void iterative(TreeNode *root)
    {
        queue<TreeNode*>q;
        q.push(root);
        while(!q.empty())
        {
            int size=q.size();
            for(int m=0;m<size;++m)
            {
                TreeNode * cur=q.front();
                q.pop();
                if(cur->left)
                    q.push(cur->left);
                if(cur->right)
                    q.push(cur->right);
                TreeNode* tmp=cur->left;
                cur->left=cur->right;
                cur->right=tmp;
            }
           
        }
    }
 */
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
       
        if(root==NULL)return NULL;
        TreeNode* p;
        p=root->left;
        root->left=root->right;
        root->right=p;
        invertTree(root->left);
        invertTree(root->right);
        return root;
       
    }
};