【LeetCodehot100】T108:将有序数组转换为二叉搜索树 T98:验证搜索二叉树

T108:将有序数组转换为二叉搜索树

题目要求:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。

题目理解

输入一个升序数组nums

输出一棵"高度平衡"的二叉搜素树(BST)

核心思路

BST特点

左 < 根 < 右

所以我们必须

每次选中间元素当根节点

流程:

1️⃣ 找中点 mid

2️⃣ 创建 root = numsmid

3️⃣ 左子树 = build(left, mid-1)

4️⃣ 右子树 = build(mid+1, right)

代码实现

java 复制代码
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return build(nums, 0, nums.length - 1);
    }

    private TreeNode build(int[] nums, int left, int right) {
        // 终止条件
        if (left > right) {
            return null;
        }

        // 正确的中点
        int mid = left + (right - left) / 2;

        // 创建节点
        TreeNode root = new TreeNode(nums[mid]);

        // 左子树
        root.left = build(nums, left, mid - 1);

        // 右子树
        root.right = build(nums, mid + 1, right);

        return root;
    }
}
}

本题感悟

  1. 掌握升深度搜素树的概念:左<根节点<右
  2. 深入递归思想

T98:验证搜索二叉树

题目要求

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

节点的左子树只包含 严格小于 当前节点的数。

节点的右子树只包含 严格大于 当前节点的数。

所有左子树和右子树自身必须也是二叉搜索树。

本质理解

BST定义

对于每个节点:
左子树所有节点 < 当前节点
右子树所有节点 > 当前节点

核心思路

中序遍历

BST 的中序遍历 = 严格递增序列

代码实现

java 复制代码
/**
 * 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 {
    long prev=Long.MIN_VALUE;//记录上一个值
    public boolean isValidBST(TreeNode root) {
        return inorder(root);
    }
        private boolean inorder(TreeNode node){
            if(node==null){
                return true;
            }
            //递归调用左子树
            if(!inorder(node.left)){
                return false;
            }
            //中(判断)
            if(node.val<=prev){
                return false;
            }
            prev=node.val;
            //递归调用右子树
            return inorder(node.right);
        }
    
}

本题感悟

被二叉树递归绕的晕晕的

相关推荐
vibecoding日记21 小时前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr21381 天前
Verilog参数化游程编码RLE模块
算法
望易1 天前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络1 天前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
HjhIron2 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩2 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹2 天前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术2 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
浮生望2 天前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法