来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。 更正式地说,即 root.val = min(root.left.val, root.right.val) 总成立。 给出这样的一个二叉树,你需要输出所有节点中的 第二小的值 。 如果第二小的值不存在的话,输出 -1 。
解答
/*** 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}*/var findSecondMinimumValue = function(root) {let minValue = Infinity, secondMinValue = Infinity;function traverse (node) {if (!node) return;if (node.val <= minValue) {if (node.val !== minValue) {secondMinValue = Math.min(minValue, secondMinValue);}minValue = node.val;} else {secondMinValue = Math.min(secondMinValue, node.val);}traverse(node.left);traverse(node.right);}traverse(root);return secondMinValue === Infinity ? -1 : secondMinValue;};
