Leetcode 54.最大二叉树
class Solution {
public :
TreeNode* constructMaximumBinaryTree ( vector< int > & nums) {
TreeNode* node = new TreeNode ( 0 ) ;
if ( nums. size ( ) == 1 ) {
node-> val = nums[ 0 ] ;
return node;
}
int maxValue = 0 ;
int index = 0 ;
for ( int i= 0 ; i< nums. size ( ) ; i++ ) {
if ( nums[ i] > maxValue) {
maxValue= nums[ i] ;
index = i;
}
}
node-> val = maxValue;
if ( index> 0 ) {
vector< int > newVec ( nums. begin ( ) , nums. begin ( ) + index) ;
node-> left = constructMaximumBinaryTree ( newVec) ;
}
if ( index< nums. size ( ) - 1 ) {
vector< int > newVec ( nums. begin ( ) + index+ 1 , nums. end ( ) ) ;
node-> right = constructMaximumBinaryTree ( newVec) ;
}
return node;
}
} ;
Leetcode 617.合并二叉树
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;
}
} ;
Leetcode 700.二叉搜索树中的搜索
class Solution {
public :
TreeNode* searchBST ( TreeNode* root, int val) {
if ( root== NULL || root-> val== val) return root;
TreeNode* result = NULL ;
if ( root-> val > val) {
result = searchBST ( root-> left, val) ;
}
if ( root-> val < val) {
result = searchBST ( root-> right, val) ;
}
return result;
}
} ;
Leetcode 98.验证二叉搜索树
class Solution {
public :
TreeNode* pre = NULL ;
bool isValidBST ( TreeNode* root) {
if ( root== NULL ) return true ;
bool left = isValidBST ( root-> left) ;
if ( pre != NULL && pre-> val >= root-> val) return false ;
pre = root;
bool right = isValidBST ( root-> right) ;
return left && right;
}
} ;