next value of BST

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

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;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值