1. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val, left, right) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.left = (left===undefined ? null : left)
    6. * this.right = (right===undefined ? null : right)
    7. * }
    8. */
    9. /**
    10. * @param {TreeNode} root
    11. * @param {TreeNode} subRoot
    12. * @return {boolean}
    13. */
    14. const isSametree = (root, subRoot) => {
    15. if (root == null && subRoot == null) return true
    16. // 如果有一棵树为 null, 另一棵树后面还有节点,则不符合题意
    17. if (root === null || subRoot === null) return false
    18. // 判断 先序遍历 的顺序是否一致
    19. if (root.val !== subRoot.val) return false
    20. return isSametree(root.left, subRoot.left) && isSametree(root.right, subRoot.right)
    21. }
    22. var isSubtree = function (root, subRoot) {
    23. if (!root) return false
    24. isSametree(root, subRoot)
    25. // 递归遍历 root 判断是否有子树
    26. return isSametree(root, subRoot) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
    27. };