js-practice/src/tree/subtree-of-another-tree.js
2020-05-07 18:32:08 +08:00

28 lines
743 B
JavaScript

/**
* 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} s
* @param {TreeNode} t
* @return {boolean}
*/
export const isSubtree = function (s, t) {
if (!s && t) {
return false
}
const linkNode = function (node, target) {
if ((!node && target) || (node && !target)) return false
if (!node && !target) return true
return node.val === target.val ? linkNode(node.left, target.left) && linkNode(node.right, target.right) : false
}
return linkNode(s, t) || isSubtree(s.left, t) || isSubtree(s.right, t)
}