class Solution {
ArrayList<Integer> res;
int count;
int maxCount;
TreeNode pre;
public int[] findMode(TreeNode root) {
res = new ArrayList<>();
maxCount = 0;
count = 0;
pre = null;
findMode1(root);
int[] result =new int[res.size()];
for (int i = 0; i < res.size(); i++) {
result[i] = res.get(i);
}
return result;
}
public void findMode1 (TreeNode root){
if(root == null) return;
findMode1(root.left);
//pre == null放前面
if(pre == null || pre.val != root.val ){
count = 1;
}else{
count ++;
}
if(count > maxCount){
res.clear();
res.add(root.val);
maxCount = count;
}else if(count == maxCount){
res.add(root.val);
}
pre = root;
findMode1(root.right);
}
}
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root == null || root == p || root == q){
return root;
}
TreeNode left = lowestCommonAncestor(root.left , p ,q );
TreeNode right = lowestCommonAncestor(root.right , p ,q );
if(right == null && left == null){
return null;}
else if(right != null && left == null){
return right;}
else if(right == null && left != null){
return left;}
else{
return root;
}
}
}
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right , p, q);
if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left , p, q);
return root;
}
}
class Solution {
public TreeNode insertIntoBST(TreeNode root, int val) {
if(root == null){
return new TreeNode(val);
}
if(root.val > val){
root.left = insertIntoBST(root.left , val);
}
if(root.val < val){
root.right = insertIntoBST(root.right , val);
}
return root;
}
}