Balance a Binary Search Tree LeetCode solution in C++
1class Solution {2public:3vector<int> nums;4void traverse(TreeNode *root) {5if (!root) return;6traverse(root->left);7nums.push_back(root->val);8traverse(root->right);9return;10}1112TreeNode *makeTree(int s, int e) {13if (s > e) return nullptr;14int m = (s + e) / 2;15TreeNode *root = new TreeNode(nums[m]);1617root->left = makeTree(s, m - 1);18root->right = makeTree(m + 1, e);1920return root;21}2223TreeNode *balanceBST(TreeNode *root) {24traverse(root);25return makeTree(0, size(nums) - 1);26}27};