/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @param {TreeNode} subRoot
* @return {boolean}
*/
const isSametree = (root, subRoot) => {
if (root == null && subRoot == null) return true
// 如果有一棵树为 null, 另一棵树后面还有节点,则不符合题意
if (root === null || subRoot === null) return false
// 判断 先序遍历 的顺序是否一致
if (root.val !== subRoot.val) return false
return isSametree(root.left, subRoot.left) && isSametree(root.right, subRoot.right)
}
var isSubtree = function (root, subRoot) {
if (!root) return false
isSametree(root, subRoot)
// 递归遍历 root 判断是否有子树
return isSametree(root, subRoot) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
};