力扣算法学习day15-2

文章目录

  • 力扣算法学习day15-2
    • 700-二叉搜索树中的搜索
      • 题目
      • 代码实现
    • 98-验证二叉搜索树
      • 题目
      • 代码实现
        • 已复习 19-删除链表的倒数第N个结点

力扣算法学习day15-2

700-二叉搜索树中的搜索

题目

力扣算法学习day15-2_第1张图片

力扣算法学习day15-2_第2张图片

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    // 迭代法:
    // public TreeNode searchBST(TreeNode root, int val) {
    //     if(root == null){
    //         return null;
    //     }

    //     if(root.val == val){
    //         return root;
    //     } else if(val < root.val){
    //         return searchBST(root.left,val);
    //     } else{
    //         return searchBST(root.right,val);
    //     }
    // }

    // 循环查找
    public TreeNode searchBST(TreeNode root, int val) {
        while(root != null){
            if(val < root.val){
                root = root.left;
            }else if(val > root.val){
                root = root.right;
            }else{
                return root;
            }
        }
        return null;
    }
}

98-验证二叉搜索树

题目

力扣算法学习day15-2_第3张图片

力扣算法学习day15-2_第4张图片

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    // public boolean isValidBST(TreeNode root) {
    //     List list = new ArrayList<>();
    //     infixOrder(root,list);
        
    //     for(int i = 0;i < list.size() - 1;i++){
    //         if(list.get(i) >= list.get(i+1)){
    //             return false;
    //         }
            
    //     }
    //     return true;
    // }
    // public void infixOrder(TreeNode node,List list){
    //     if(node == null){
    //         return;
    //     }
    //     infixOrder(node.left,list);
    //     list.add(node.val);
    //     infixOrder(node.right,list);
    // }

    // 速度优化 2ms->0ms
    long preValue = Long.MIN_VALUE;// 注:这里如果要最低值永远取得到的话,用TreeNode pre来解决.
    public boolean isValidBST(TreeNode root) {
        if(root == null){
            return true;
        }
        boolean leftResult = isValidBST(root.left);
        if(preValue < root.val){
            preValue = root.val;
        }else{
            return false;
        }
        boolean rightResult = isValidBST(root.right);

        return leftResult && rightResult;
    }
    
}
已复习 19-删除链表的倒数第N个结点

你可能感兴趣的:(算法刷题,算法,leetcode)