28. 修剪二叉搜索树
递归法
var trimBST = function ( root, low, high ) {
if ( root === null ) {
return null ;
}
if ( root. val < low) {
let right = trimBST ( root. right, low, high) ;
return right;
}
if ( root. val > high) {
let left = trimBST ( root. left, low, high) ;
return left;
}
root. left = trimBST ( root. left, low, high) ;
root. right = trimBST ( root. right, low, high) ;
return root;
}
迭代法
29. 将有序数组转换为二叉搜索树
递归法
var sortedArrayToBST = function ( nums ) {
const buildTree = ( Arr, left, right ) => {
if ( left > right)
return null ;
let mid = Math. floor ( left + ( right - left) / 2 ) ;
let root = new TreeNode ( Arr[ mid] ) ;
root. left = buildTree ( Arr, left, mid - 1 ) ;
root. right = buildTree ( Arr, mid + 1 , right) ;
return root;
}
return buildTree ( nums, 0 , nums. length - 1 ) ;
} ;
30. 把二叉搜索树转换为累加树
递归法
var convertBST = function ( root ) {
let pre = 0 ;
const ReverseInOrder = ( cur ) => {
if ( cur) {
ReverseInOrder ( cur. right) ;
cur. val += pre;
pre = cur. val;
ReverseInOrder ( cur. left) ;
}
}
ReverseInOrder ( root) ;
return root;
} ;
31. 总结篇