📅  最后修改于: 2023-12-03 15:37:39.846000             🧑  作者: Mango
在二叉搜索树中,最小值的节点即为左子树中最左端的节点。因此,我们可以从根节点开始,沿着左侧子树一直向下搜索,直到找到最左端的节点。
以下是一个简单的实现:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int findMin(TreeNode root) {
// 如果左子树为空,则当前节点为最小值节点
if (root.left == null) {
return root.val;
}
// 否则继续向左侧子树搜索
return findMin(root.left);
}
}
此外,也可以使用迭代的方式,通过维护一个指针来完成搜索:
class Solution {
public int findMin(TreeNode root) {
TreeNode curr = root;
while (curr.left != null) {
curr = curr.left;
}
return curr.val;
}
}
这种方式会比递归的方式更加高效。
总之,在二叉搜索树中寻找最小值的节点可以用递归或迭代的方式来实现,具体选择哪种方式取决于实际情况,需要根据具体问题进行综合考虑。