226. Invert Binary Tree


// iterative bfs using queue 
class Solution {
    public TreeNode invertTree(TreeNode root) {
      // base case
      if(root == null) return null;
      Queue<TreeNode> queue = new LinkedList<>();
      queue.offer(root);
      while(!queue.isEmpty()){
        TreeNode cur = queue.poll();
        TreeNode tmp = cur.left;
        cur.left = cur.right;
        cur.right = tmp;
        
        
        if(cur.right != null) queue.offer(cur.right);
        if(cur.left != null) queue.offer(cur.left);
      }
      return root;
    }
}

 

 

 

// recursive 

class Solution {
    public TreeNode invertTree(TreeNode root) {
      // base case
      if(root == null) return null;
      
      // 
      TreeNode right = invertTree(root.left);
      TreeNode left = invertTree(root.right);
      
      root.right = right;
      root.left = left;
      
      return root;
  
    }
}

 

Invert a binary tree.

Example:

Input:

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

Output:

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

posted on 2018-07-19 12:04  猪猪&#128055;  阅读(83)  评论(0)    收藏  举报

导航