思路一:DFS 深搜将 s 的每个节点作为根节点形成一个子树,再深搜进行判断 s 的每个子树是否和 t 相等。
判断两个树相等就是 -> NO.100 相同的树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
publicbooleanisSubtree(TreeNode s, TreeNode t){ if (s == null) returnfalse; //当前节点为根的子树是否相等 if (isSame(s, t)) { returntrue; } else { //深搜 return isSubtree(s.left, t) || isSubtree(s.right, t); } }
privatebooleanisSame(TreeNode s, TreeNode t){ if (s == null && t == null) returntrue; if (s == null || t == null) returnfalse; if (s.val != t.val) returnfalse; return isSame(s.left, t.left) && isSame(s.right, t.right); }