Saturday, February 13, 2016

Identical Binary Tree

Identical Binary Tree

Check if two binary trees are identical. Identical means the two binary trees have the same structure and every identical position has the same value.

Example
    1             1
   / \           / \
  2   2   and   2   2
 /             /
4             4
are identical.
    1             1
   / \           / \
  2   3   and   2   3
 /               \
4                 4
are not identical.



/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param a, b, the root of binary trees.
     * @return true if they are identical, or false.
     */
    public boolean isIdentical(TreeNode a, TreeNode b) {
        // Write your code here
        if (a == null && b == null) {
            return true;
        }
        
        if ((a == null && b != null) || (a != null && b == null)) {
            return false;
        } 
        
        if (a != null && b != null) {
            if (a.val != b.val) {
                return false;
            }
            else {
                return isIdentical(a.left, b.left) && isIdentical(a.right, b.right);
            }
        }
        
        return false;
    }
}



Follow up: 

Tweaked Identical Binary Tree