LeetCode 二叉搜索树 2 道必刷题|递归一行看懂,秒懂秒会

张开发
2026/4/17 17:57:27 15 分钟阅读

分享文章

LeetCode 二叉搜索树 2 道必刷题|递归一行看懂,秒懂秒会
前言二叉搜索树BST是算法里最常考、最简单、最容易拿分的知识点今天我用最直白、最小白、最容易记住的方式带你搞定两道高频题有序数组 → 平衡 BST简单递归验证一棵树是不是 BST中序遍历秒杀代码干净、思路直白、不绕弯零基础也能一次学会LeetCode 108. 将有序数组转换为二叉搜索树 题目是什么意思给你一个升序数组让你把它变成一棵平衡二叉搜索树。规则很简单左子树 根右子树 根整棵树尽量平衡 超级小白思路数组已经排好序了那我们直接取中间当根左边递归建左树右边递归建右树。一句话口诀中间做根左是左右是右递归搞定最终代码最简洁版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) / 2; TreeNode root new TreeNode(nums[mid]); // 递归建左子树 root.left build(nums, left, mid - 1); // 递归建右子树 root.right build(nums, mid 1, right); return root; } } 小白逐行解释取数组中间值当根保证树平衡左边所有数 → 递归成左子树右边所有数 → 递归成右子树最后返回根一棵完美平衡 BST 就建好了LeetCode 98. 验证二叉搜索树 题目是什么意思给你一棵二叉树让你判断它是不是合法的二叉搜索树。二叉搜索树的规则左子树全部 根右子树全部 根所有子树也必须满足 小白最简单思路不用记复杂逻辑二叉搜索树的中序遍历一定是升序的所以中序遍历一遍树把结果放进 list看 list 是不是严格递增是 → 合法不是 → 不合法超级直白最终代码小白最爱class Solution { ListInteger list new ArrayList(); public boolean isValidBST(TreeNode root) { // 中序遍历 inorder(root); // 判断是否严格递增 for (int i 1; i list.size(); i) { if (list.get(i) list.get(i - 1)) { return false; } } return true; } // 中序遍历左 → 根 → 右 private void inorder(TreeNode root) { if (root null) return; inorder(root.left); list.add(root.val); inorder(root.right); } } 小白秒懂中序遍历 BST →一定升序只要不是升序 → 直接返回 false逻辑简单、代码短、面试最爱写 两道题总结超级好记1. 有序数组转平衡 BST中间做根左递归左右递归右2. 验证 BST中序遍历 → 看是否升序

更多文章