杨乐乐
Never too late

Follow

Never too late

Follow

Day 20 二叉树 - 二叉搜索树的最小绝对值

杨乐乐's photo
杨乐乐
·Feb 3, 2023·

2 min read

Table of contents

  • 530. 二叉搜索树的最小绝对值
  • 501. 二叉搜索树中的众数
  • 236. 二叉树的最近公共祖先

530. 二叉搜索树的最小绝对值

function getMinimumDifference(root: TreeNode | null): number {
    let res = Infinity;
    let pre = null;
    const dfs = (node: TreeNode | null) => {
        if (node === null) {
            return;
        };
        dfs(node.left);
        if (pre !== null) {
            res = Math.min(res, node.val - pre.val);
        };
        pre = node;
        dfs(node.right);
    };
    dfs(root);
    return res;
};

501. 二叉搜索树中的众数

function findMode(root: TreeNode | null): number[] {
    let res = [];
    let pre = null;
    let maxCount = 1;
    let count = 0;

    const dfs = (node) => {
        if (node === null) {
            return;
        }
        dfs(node.left);
        if (pre === null) {
            count = 1;
        } else if (pre.val === node.val) {
            count++;
        } else {
            count = 1;
        }
        pre = node;
        if (count === maxCount) {
            res.push(node.val);
        }
        if (count > maxCount) {
            res = [];
            maxCount = count;
            res.push(node.val);
        }
        dfs(node.right);
    };

    dfs(root);
    return res;
};

236. 二叉树的最近公共祖先

function lowestCommonAncestor(root: TreeNode | null, p: TreeNode | null, q: TreeNode | null): TreeNode | null {
    if (root === p || root === q || root === null) {
        return root;
    }

    const left = lowestCommonAncestor(root.left, p , q);
    const right = lowestCommonAncestor(root.right, p , q);

    if (left !== null && right !== null) {
        return root;
    }
    if (!left) {
        return right;
    }
    return left;
};
 
Share this