Zheaoli / do-something-right

MIT License
37 stars 3 forks source link

2022-08-28 #343

Open Zheaoli opened 2 years ago

Zheaoli commented 2 years ago

2022-08-28

gongpeione commented 2 years ago
/*
 * @lc app=leetcode id=572 lang=typescript
 *
 * [572] Subtree of Another Tree
 */

// @lc code=start
/**
 * 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)
 *     }
 * }
 */

// type TreeNode = {
//     val: number
//     left: TreeNode | null
//     right: TreeNode | null
// };
function isSameTree(p: TreeNode | null, q: TreeNode | null): boolean {
    if (!p && !q) {
        return true;
    }
    if (!p || !q) {
        return false;
    }
    return p.val === q.val
        && p.left?.val === q.left?.val
        && p.right?.val === q.right?.val
        && isSameTree(p.left, q.left)
        && isSameTree(p.right, q.right);
};

function isSubtree(root: TreeNode | null, subRoot: TreeNode | null): boolean {
    if (!root && !subRoot) {
        return true;
    }
    if (!subRoot) {
        return true;
    }
    if (!root || !subRoot) {
        return false;
    }

    const isSame = root.val === subRoot.val && isSameTree(root, subRoot);

    return isSame || isSubtree(root.right, subRoot) || isSubtree(root.left, subRoot);
};
// @lc code=end

微信id: 弘树 来自 vscode 插件