/** * 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} root * @return {number} */ const getMinimumDifference = function (root) { }; /* 二叉搜索树的一个重要特征就是,中序遍历的结果是一个升序序列,所以只要中序遍历整个二叉树,前一个节点和当前节点作比较的值的绝对值就可能 是这个最小的差值 */ function f1(root) { let prev = null; // 记录前一个节点的值 let minDiff = Infinity; // 初始化最小差值为正无穷 // 中序遍历函数 function inOrder(node) { if (!node) return; // 先遍历左子树 inOrder(node.left); // 当前节点与前一个节点的差值 if (prev !== null) { minDiff = Math.min(minDiff, Math.abs(node.val - prev)); } // 更新前一个节点为当前节点 prev = node.val; // 再遍历右子树 inOrder(node.right); } // 从根节点开始中序遍历 inOrder(root); return minDiff; } /* 使用迭代实现中序遍历 */