- 修剪二叉搜索树
这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。
题目链接/文章讲解: https://programmercarl.com/0669.修剪二叉搜索树.html
视频讲解: https://www.bilibili.com/video/BV17P41177ud
/**
* @param {TreeNode} root
* @param {number} low
* @param {number} high
* @return {TreeNode}
*/
var trimBST = function(root, low, high) {
if (root === null) return root;
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;
};
108.将有序数组转换为二叉搜索树
本题就简单一些,可以尝试先自己做做。
https://programmercarl.com/0108.将有序数组转换为二叉搜索树.html
视频讲解:https://www.bilibili.com/video/BV1uR4y1X7qL
/**
* @param {number[]} nums
* @return {TreeNode}
*/
var sortedArrayToBST = function(nums) {
if (nums.length === 0) return null;
let mid = Math.floor(nums.length/2);
const node = new TreeNode(nums[mid]);
if (nums.length === 1) {
return node;
}
node.left = sortedArrayToBST(nums.slice(0,mid));
node.right = sortedArrayToBST(nums.slice(mid+1));
return node;
};
538.把二叉搜索树转换为累加树
本题也不难,在 求二叉搜索树的最小绝对差 和 众数 那两道题目 都讲过了 双指针法,思路是一样的。
https://programmercarl.com/0538.把二叉搜索树转换为累加树.html
视频讲解:https://www.bilibili.com/video/BV1d44y1f7wP
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var convertBST = function(root) {
let total = 0;
const traverse = (node)=>{
if (node===null) {
return;
}
traverse(node.right);
total += node.val;
node.val = total;
traverse(node.left);
}
traverse(root);
return root;
};
标签:node,return,nums,随想录,二叉,搜索,root
From: https://www.cnblogs.com/yuanyf6/p/18223343