import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /*
      解题思路:
          判断二叉树是否相等,就只需要同时对这两颗二叉树做dfs(先序遍历)即可。
          再dfs的过程去校验对应的值是否相等。
          1)如果dfs到两课树的节点同时为null,那说明是相等的,因为同时dfs都越过了叶子节点了。肯定相等
          2)如果说有一颗树的节点先为null,或者说 对应的节点不相等就不是相等的了。
    */
    public boolean isSameTree (TreeNode p, TreeNode q) {
        // 同时越过了叶子节点
        if(p==null && q==null) return true;
        // 有一个颗树的节点先为null,或者对应的节点不相等
        if(p==null|| q==null || q.val!=p.val) return false;
        // 递归dfs(这里采用先序dfs,即,根左右的节奏),验证左子树相等 并且 右子树相等。
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
   
}