530.二叉搜索树的最小绝对差
代码:
class Solution {
public int getMinimumDifference(TreeNode root) {
tranversal(root);
return res;
}
int res = Integer.MAX_VALUE;
TreeNode pre = null;
public void tranversal(TreeNode root){
if(root == null){
return ;
}
tranversal(root.left);
if(pre != null){
res = Math.min(res,root.val - pre.val);
}
pre=root;
tranversal(root.right);
}
}
501.二叉搜索树中的众数
代码:
class Solution {
List<Integer> res = new ArrayList<>();
TreeNode pre = null;
int count = 0;
int maxCount = 0;
public int[] findMode(TreeNode root) {
tranverse(root);
int[] resList = new int[res.size()];
for(int i = 0; i< resList.length; i++){
resList[i]= res.get(i);
}
return resList;
}
void tranverse(TreeNode root){
if(root == null){
return;
}
tranverse(root.left);
if(pre == null){
count = 1;
maxCount = 1;
res.add(root.val);
}else{
if(root.val == pre.val){
count++;
if(count== maxCount){
res.add(root.val);
}else if(count > maxCount){
res.clear();
maxCount=count;
res.add(root.val);
}
}
if(root.val != pre.val){
count= 1;
if(count == maxCount){
res.add(root.val);
}
}
}
pre = root;
tranverse(root.right);
}
}
236. 二叉树的最近公共祖先
代码:
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root == null) return null;
if(root == p || root == q) return root;
TreeNode left = lowestCommonAncestor(root.left, p , q);
TreeNode right = lowestCommonAncestor(root.right, p , q);
if(left != null && right != null){
return root;
}
if(left == null && right != null){
return right;
}
if(left != null && right == null){
return left;
}
return null;
}
}