力扣:二叉搜索树中的搜索java

力扣:二叉搜索树中的搜索java

在这里插入图片描述
递归法迭代法

递归:

递归三部曲:

  1. 参数返回值:参数为根节点和目标值
  2. 结束条件
    节点为空返回null,节点为目标值返回该节点
  3. 递归逻辑
  • 创建一个result,用来保存得到的节点用于返回
  • 判断该点值是否大于目标值,大于则递归调用参数为该接节点的左子树。小于则递归调用参数为该接节点的右子树。并将返回值存入result。
  • 返回result。

递归代码

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root == null) return null;//结束条件,节点为空返回null
        if(root.val == val) return root;//结束条件,节点为目标值返回该节点
        TreeNode result = null;//存储结果节点
        if(root.val>val) result = searchBST(root.left,val);//比较,选择判断左还是右子树
        if(root.val<val) result = searchBST(root.right,val);
        return result;
    }
}

迭代:先序遍历

流程:利用搜索二叉树特性

  1. node赋值为root
  2. 循环node不为空,判断node的值大于目标值就node赋值为node的左子树,小于就赋值为右子树,等于返回node。
  3. 最后返回null(没有相等的)

迭代代码

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        TreeNode node=root;
        while(node != null){//节点 不为空说明还有可以搜索节点
            if(node.val>val) node = node.left;//比较,选择左右子树
            else if(node.val<val) node = node.right;
            else return node;
        }
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值