530.二叉搜索树的最小绝对差
解题思路
二叉搜索树中序遍历的话,正好是排序好的数字
代码实现
var getMinimumDifference = function(root) {
var prev = null;
var minDiff =Infinity;
var inOrderTravel = function(root){
if(!root) return;
inOrderTravel(root.left);
if(prev!==null){
minDiff = Math.min(minDiff,Math.abs(root.val -prev));
}
prev = root.val;
inOrderTravel(root.right);
}
inOrderTravel(root);
return minDiff;
};
501.二叉搜索树中的众数
解题思路
代码实现
var findMode = function(root) {
var map =new Map();;
var inOrderTravel = function(root){
if(!root){return;}
inOrderTravel(root.left);
if(!map.has(root.val)){
map.set(root.val,1)
}else{
var num = map.get(root.val);
map.set(root.val,num + 1);
}
inOrderTravel(root.right);
}
inOrderTravel(root);
var max,zs=[];
map.forEach((value,key)=>{
if(!max){
max = value;
}
if(value>max){
max = value;
}
})
map.forEach((value,key)=>{
if(value ===max){
zs.push(key);
}
})
return zs;
};
236. 二叉树的最近公共祖先
解题思路
后序遍历(回溯)
代码实现
var lowestCommonAncestor = function(root, p, q) {
var postOrder= function(root,p,q){
if(!root) return root;
if(root ===p || root===q) return root;
var left = postOrder(root.left,p,q);
var right = postOrder(root.right,p,q);
if(left && right) return root;
if(!left && right) return right;
if(left && !right) return left;
if(!left && !right) return null;
}
var res = postOrder(root,p,q);
return res;
};