/**
 * Author : Laberat
 * Date   : 16/2/4.
 * Link   : https://leetcode.com/problems/same-tree/
 * Number : # 100
 * Desc   : Given two binary trees, write a function to check if they are equal or not.
 *          Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
 */
public class SameTree {

    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) return true;
        if (p == null && q != null) return false;
        if (p != null && q == null) return false;
        if (p.val != q.val) return false;
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

    class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }
}

solve # 100