binary search tree,给定一个value,return bin tree里面下一个比value大的值
int nextVal(TreeNode root, int target) {
if (root == null) {
return -1;
}
TreeNode succ = null;
TreeNode node = root;
while (node != null) {
if (node.val == target) {
if (node.right == null) {
break;
} else {
node = node.right;
}
} else if (node.val > target) {
succ = node;
node = node.left;
} else {
node = node.right;
}
}
if (succ == null) {
return -1;
}
return succ.val;
}
public static void main(String[] args) {
TreeNode tn1 = new TreeNode(1);
TreeNode tn2 = new TreeNode(2);
TreeNode tn3 = new TreeNode(3);
TreeNode tn4 = new TreeNode(4);
TreeNode tn5 = new TreeNode(5);
TreeNode tn6 = new TreeNode(6);
TreeNode tn7 = new TreeNode(7);
TreeNode tn8 = new TreeNode(8);
TreeNode tn9 = new TreeNode(9);
tn5.left = tn2;
tn5.right = tn8;
tn2.left = tn1;
tn2.right = tn4;
tn4.left = tn3;
tn8.left = tn7;
tn8.right = tn9;
tn7.left = tn6;
NextValueBST s = new NextValueBST();
System.out.println(s.nextVal(tn5, 4));
System.out.println(s.nextVal(tn5, 2));
System.out.println(s.nextVal(tn5, 8));
System.out.println(s.nextVal(tn5, 5));
System.out.println(s.nextVal(tn5, -1));
System.out.println(s.nextVal(tn5, 10));
return;
}

本文介绍了一个算法,用于在一个二叉搜索树中找到指定值之后的下一个最大值。通过遍历树结构,该算法能够有效地定位目标值并返回其后继节点的值。

370

被折叠的 条评论
为什么被折叠?



