class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
//同时遍历两棵二叉树的相同位置 都加上root1上
if(root1==NULL&&root2==NULL)
return NULL;
else if(root1==NULL){
return root2;
}
else if(root2==NULL){
return root1;
}
else{
//两个结点都不为空
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)
return NULL;
else if(root->val==val)
return root;
else{
if(root->val>val)
return searchBST(root->left,val);
else
return searchBST(root->right,val);
}
return NULL;
}
};
class Solution {
public:
vector<int> res;
void dfs(TreeNode *root){
if(root!=NULL){
dfs(root->left);
res.push_back(root->val);
dfs(root->right);
}
}
bool isValidBST(TreeNode* root) {
dfs(root);
int i=0,j=1;
while(i<res.size()&&j<res.size()){
if(res[i]>=res[j])
return false;
i++;
j++;
}
return true;
}
};