671.Second Minimum Node In a Binary Tree
发布时间:2020-12-14 04:15:41 所属栏目:大数据 来源:网络整理
导读:Given a non-empty special binary tree consisting of nodes with the non-negative value,where each node in this tree has exactly?twoor?zero?sub-node. If the node has two sub-nodes,then this node‘s value is the smaller value among its two su
Given a non-empty special binary tree consisting of nodes with the non-negative value,where each node in this tree has exactly?twoor?zero?sub-node. If the node has two sub-nodes,then this node‘s value is the smaller value among its two sub-nodes. Given such a binary tree,you need to output the?second minimum?value in the set made of all the nodes‘ value in the whole tree. If no such second minimum value exists,output -1 instead. Example 1:? Input: 2 / 2 5 / 5 7 Output: 5 Explanation: The smallest value is 2,the second smallest value is 5. Example 2:? Input: 2 / 2 2 Output: -1 Explanation: The smallest value is 2,but there isn‘t any second smallest value. for left and right sub-node,if their value is the same with the parent node value,need to using recursion to find the next candidate,otherwise use their node value as the candidate. public int findSecondMinimumValue(TreeNode root) { if (root == null) { return -1; } if (root.left == null && root.right == null) { return -1; } int left = root.left.val; int right = root.right.val; // if value same as root value,need to find the next candidate if (root.left.val == root.val) { left = findSecondMinimumValue(root.left); } if (root.right.val == root.val) { right = findSecondMinimumValue(root.right); } if (left != -1 && right != -1) { return Math.min(left,right); } else if (left != -1) { return left; } else { return right; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |