LeetCode每日刷题Day14---L700 二叉搜索树中的搜索

L700 二叉搜索树中的搜索

思路与结果

LeetCode每日刷题Day14---L700 二叉搜索树中的搜索

代码思路1

package Day14_6_3.L700;

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

/**
 * 思路1
 1. 通过递归
 a. 先判断,为空,则返回空
 b. 值等于节点值,直接返回该节点
 c. 值大于节点值,返回 递归 右节点
 d. 值小于节点值,返回 递归 左节点
 e. 其他 返回空值
 反思
 就是一般的二叉树搜索值,递归思路
 */
public class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null) return null;
        if (val == root.val){
            return root;
        }
        else if (val < root.val){
            return searchBST(root.left, val);
        }
        else if (val > root.val){
            return searchBST(root.right, val);
        }
        else
            return null;
    }
}

代码思路2

package Day14_6_3.L700;

/**
 * 思路2
 1. 通过迭代
 a. while循环,条件为节点不为空
 i. 值等于节点值,直接返回该节点
 ii. 值大于节点值,当前节点更新 ,等于该节点的右节点
 iii. 值小于节点值,当前节点更新 ,等于该节点的左节点
 b. 循环外,返回空值

 */
public class Solution2 {
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null) return null;
        while (root != null){
            if (root.val == val) return root;
            else if ( root.val < val) root = root.right;
            else root = root.left;
        }
        return null;
    }
}
上一篇:python学习笔记,视频day14-集合,字符串格式化


下一篇:零基础学习java------day14-----