zoukankan      html  css  js  c++  java
  • 700_二叉搜索树中的搜索

    700_二叉搜索树中的搜索

    package 二叉树.二叉搜索树;
    
    /**
     * https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
     * @author Huangyujun
     *
     *从自己的代码书写得到一个提示:有返回值的递归函数,需要用变量接收返回值 【对应的变量】
     */
    public class _700_二叉搜索树中的搜索 {
        //递归实现:① 若是值 = 根值,直接返回根结点;② 若是值 > 根值,只能到右子树中找,否则只能在左子树中找。
        class Solution {
              public TreeNode searchBST(TreeNode root, int val) {
                if (root == null || val == root.val) return root;
                return val < root.val ? searchBST(root.left, val) : searchBST(root.right, val);
              }
            }
    
        
    //接下来的代码实现思路与官网一致,就是写得有点啰嗦了
        //多看看官网的代码思路:
        //尤其是最后一句:结果要么是在A要么是在B,就return(条件偏向A)? A :B; 
    //    public TreeNode searchBST(TreeNode root, int val) {
    //        //找到返回即可
    //        if(root == null || val == root.val)    return root;
    //        if(root.val > val) {
    //            //当前值小于,在右子树找
    //            root =  searchBST(root.left,val); 
    //        }else if(root.val < val) {
    //            //大了,左子树找
    //            root = searchBST(root.right,val); 
    //        }
    //        
    //        return root;
    //    }
        
        //迭代实现:当一直不是 根值时,判断若 值小于根值,则只能在左区域找,否则只能在右区域找
        class Solution2 {
              public TreeNode searchBST(TreeNode root, int val) {
                while (root != null && val != root.val)
                  root = val < root.val ? root.left : root.right;
                return root;
              }
            }
    
    }

    本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/15709285.html

  • 相关阅读:
    ANSI C 与 C99的不同
    字符串中含有空格的注意事项
    巧用printf函数
    求数列的和
    数值统计
    平方和与立方和
    求奇数的乘积
    第几天?
    细节之重
    用%*c滤掉回车,ASCII码排序
  • 原文地址:https://www.cnblogs.com/shan333/p/15709285.html
Copyright © 2011-2022 走看看