
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1==null)return root2;
if(root2==null)return root1;
root1.val += root2.val;
root1.left=mergeTrees(root1.left,root2.left);
root1.right=mergeTrees(root1.right,root2.right);
return root1;
}
}

class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root==null||root.val == val ) return root;
if(root.val<val)return searchBST(root.right,val);
if(root.val>val)return searchBST(root.left,val);
return root;
}
}

class Solution {
long pre = Long.MIN_VALUE;
public boolean isValidBST(TreeNode root) {
if(root==null)return true;
if(!isValidBST(root.left)){
return false;
}
if(root.val <= pre){
return false;
}
pre=root.val;
return isValidBST(root.right);
}
}

class Solution {
TreeNode pre;
int ans = Integer.MAX_VALUE;
public int getMinimumDifference(TreeNode root) {
if(root==null)return 0;
dfs(root);
return ans;
}
public void dfs( TreeNode root){
if(root==null)return;
dfs(root.left);
if(pre!=null)ans=Math.min(ans,root.val-pre.val);
pre=root;
dfs(root.right);
}
}