今天是二叉树
AC代码:
class Solution {
public:
TreeNode* trimBST(TreeNode* root, int low, int high) {
if (root == nullptr) return nullptr;
if (root->val < low) return trimBST(root->right, low, high);
if (root->val > high) return trimBST(root->left, low, high);
root->left = trimBST(root->left, low, high);
root->right = trimBST(root->right, low, high);
return root;
}
};
AC代码:
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return _sortedArrayToBST(nums, 0, nums.size() - 1);
}
TreeNode* _sortedArrayToBST(vector<int>& nums, int left, int right) {
if (left > right) return nullptr;
int mid = (left + right) / 2;
TreeNode* root = new TreeNode(nums[mid]);
root->left = _sortedArrayToBST(nums, left, mid - 1);
root->right = _sortedArrayToBST(nums, mid + 1, right);
return root;
}
};
代码如下:
class Solution {
public:
TreeNode* convertBST(TreeNode* root) {
_convertBST(root, 0);
return root;
}
int _convertBST(TreeNode* root, int prevSum)
{
if(root == nullptr) return prevSum;
root->val += _convertBST(root->right, prevSum);
return _convertBST(root->left, root->val);
}
};