铜陵市网站建设_网站建设公司_关键词排名_seo优化
2025/12/29 13:18:44 网站建设 项目流程

代码随想录算法训练营第二十一天 | 669-修剪二叉搜索树、108-将有序数组转换为二叉搜索树、538-把二叉搜索树转换为累加树


LeetCode669 修剪二叉搜索树

题目链接:https://leetcode.cn/problems/trim-a-binary-search-tree/description/

文章讲解:https://programmercarl.com/0669.修剪二叉搜索树.html

视频讲解:https://www.bilibili.com/video/BV17P41177ud/?share_source=copy_web&vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 遇到需要修剪的节点,不能直接返回它的子树,还需要再对它的子树进行遍历,确保修剪彻底

image-20251229103607516

class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(root == null){return null;}if(root.val < low){return trimBST(root.right, low, high);}if(root.val > high){return trimBST(root.left, low, high);}root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);return root;}
}

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

题目链接:https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/

文章讲解:https://programmercarl.com/0108.将有序数组转换为二叉搜索树.html

视频讲解:https://www.bilibili.com/video/BV1uR4y1X7qL/?share_source=copy_web&vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 寻找分割点,分割点作为当前节点,然后递归左区间和右区间

​ 坚持区间左闭右闭

image-20251229130527267

class Solution {public TreeNode sortedArrayToBST(int[] nums) {return build(nums, 0, nums.length - 1);}public TreeNode build(int[] nums, int left, int right){if(left > right){return null;}int mid = (left + right)/2;TreeNode curNode = new TreeNode(nums[mid]);curNode.left = build(nums, left, mid - 1);curNode.right = build(nums, mid + 1, right);return curNode;}
}

LeetCode538 把二叉搜索树转换为累加树

题目链接:https://leetcode.cn/problems/convert-bst-to-greater-tree/description/

文章讲解:https://programmercarl.com/0538.把二叉搜索树转换为累加树.html

视频讲解:https://www.bilibili.com/video/BV1d44y1f7wP/?share_source=copy_web&vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 定义一个全局变量pre,用来保存cur节点的前一个节点的数值

​ 遇到空节点就返回,以右中左的顺序来遍历二叉树, 中节点的处理逻辑就是让curNode的数值加上前一个节点preNode的数值

image-20251229131349476

class Solution {int preNode = 0;public TreeNode convertBST(TreeNode root) {traverse(root);return root;}public void traverse(TreeNode node){if(node == null){return;}traverse(node.right);node.val += preNode;preNode = node.val;traverse(node.left);}
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询