Friday, January 22, 2016

LC100 Same Tree

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.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q == null){
            return true;
        } else if(p == null || q == null){
            return false;
        } else {
            if(p.left == null && q.left == null){
                if(p.right == null && q.right == null){
                    if(p.val == q.val){
                        return true;
                    } else {
                        return false;
                    }
                } else if(p.right == null || q.right == null){
                    return false;
                } else {
                    if(p.val == q.val){
                        if(isSameTree(p.right, q.right)){
                            return true;
                        } else {
                            return false;
                        }
                    } else {
                        return false;
                    }
                }
            } else if(p.left == null || q.left ==null){
                return false;
            } else {
                if(p.val == q.val){
                    if(isSameTree(p.left, q.left) && isSameTree(p.right, q.right)){
                        return true;
                    } else {
                        return false;
                    }                  
                } else {
                    return false;
                }
            }
        }
    }
}


consider carefully and attentively, care about all corner cases. Every note's value, left child and right child should be compare completely

No comments:

Post a Comment