题目简述:判断一棵树是不是另外一棵树的子树。
说到这里,就要说另外一个更简单的题目了,判断两棵树是否是相同的树。在这一题中,会用到这个。
var isSubtree = function (root, subRoot) {
if (!root) return false
if (sameTree(root, subRoot)) return true
// 递归进入左右子树
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
};
var sameTree = function (root1, root2) {
// 这里的头两个if的判断顺序不能弄反了
// 两个都为空,那么就是走到头了
if (!root1 && !root2) return true
// 进入这个if只可能有其中一个为空,那么也是
if (!root1 || !root2) return false
if (root1.val === root2.val) {
return sameTree(root1.left, root2.left) && sameTree(root1.right, root2.right)
}
}