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); } }