【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);
        }
    
}

本题感悟

被二叉树递归绕的晕晕的

相关推荐
用户979984807182 小时前
200 行代码写一个能跑的 AI Agent:不依赖任何框架,只靠 tool-calling 原理
算法
threerocks2 小时前
【Muse实战】X 流量作战室搭建保姆级教程 - 拥有你自己的运营团队
算法
GreenTea2 小时前
深度拆解 ScienceBuddy:如何用“双层递归自进化”构建高可靠科研 Agent Harness
前端·后端·算法
花椒技术2 小时前
2.46 秒生成 5 秒视频:拆解 H3 Max 的模型、推理栈与硬件协同
算法·音视频开发·视频编码
vivo互联网技术2 小时前
ART:妆容迁移框架,重新定义高保真妆容迁移 | ECCV 2026
人工智能·算法·图像识别
用户0441440924492 小时前
卫星信号模拟器里的四个坐标转换公式
算法
橘和柠2 小时前
阿里 open-code-review (AI代码审查工具)实战:安装、四层规则链、自定义规则格式与实测避坑
算法·面试
得物技术2 小时前
别再只卷向量检索了,得物交易搜索如何用“生成式”实现召回范式跃迁?
人工智能·算法·llm
罗西的思考2 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(4)--- Rollout实现细节
人工智能·算法
罗西的思考2 小时前
机器人 / 物理 Agent Harness 综合分析与对比:从「更强的模型」到「更好的系统」
人工智能·算法·机器学习