diff --git a/subtree-of-another-tree/Lustellz.ts b/subtree-of-another-tree/Lustellz.ts new file mode 100644 index 000000000..0e5d8f169 --- /dev/null +++ b/subtree-of-another-tree/Lustellz.ts @@ -0,0 +1,29 @@ +// Runtime: 8ms +// Memory: 63.23MB + +/** + * Definition for a binary tree node. + * class TreeNode { + * val: number + * left: TreeNode | null + * right: TreeNode | null + * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + * } + */ + +const isSameTree = (p, q): boolean => { + if (!(p && q)) return p === q + if (p.val !== q.val) return false + return isSameTree(p.left, q.left) && isSameTree(p.right, q.right) +} + +function isSubtree(root: TreeNode | null, subRoot: TreeNode | null): boolean { + if (!subRoot) return true + if (!root) return false + if (isSameTree(root, subRoot)) return true + return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot) +};