leetcode 1382 将二叉搜索树变平衡

简介: leetcode 1382 将二叉搜索树变平衡

将二叉搜索树变平衡

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<int> nums;
    void track_back(TreeNode* cur)
    {
        if(cur == nullptr) return;
        track_back(cur->left);
        nums.push_back(cur->val);
        track_back(cur->right);
        return;
    }
    TreeNode* make_tree(vector<int> &nums , int left ,int right)
    {
        if(left > right) return nullptr;
        int mid = left + (right - left)/2;
        TreeNode* new_root = new TreeNode(nums[mid]);
        new_root->left = make_tree(nums , left ,mid-1);
        new_root->right = make_tree(nums , mid+1 ,right);
        return new_root;
    }
    TreeNode* balanceBST(TreeNode* root) {
        track_back(root);
        return make_tree(nums,0,nums.size()-1);
    }
};
相关文章
|
4月前
leetcode-96:不同的二叉搜索树
leetcode-96:不同的二叉搜索树
21 0
|
4月前
|
Java C++ Python
leetcode-669:修剪二叉搜索树
leetcode-669:修剪二叉搜索树
22 1
|
4月前
|
C++ Python
leetcode-108:将有序数组转换为二叉搜索树
leetcode-108:将有序数组转换为二叉搜索树
22 0
|
4月前
|
Java C++ Python
leetcode-538:把二叉搜索树转换为累加树
leetcode-538:把二叉搜索树转换为累加树
22 0
|
19天前
Leetcode1038. 从二叉搜索树到更大和树(每日一题)
Leetcode1038. 从二叉搜索树到更大和树(每日一题)
|
3月前
|
Java
LeetCode题解-二叉搜索树中第K小的元素-Java
LeetCode题解-二叉搜索树中第K小的元素-Java
13 0
|
4月前
|
算法
代码随想录Day34 LeetCode T343整数拆分 T96 不同的二叉搜索树
代码随想录Day34 LeetCode T343整数拆分 T96 不同的二叉搜索树
30 0
|
4月前
|
存储 算法 测试技术
【深度优先】LeetCode1932:合并多棵二叉搜索树
【深度优先】LeetCode1932:合并多棵二叉搜索树
|
4月前
leetcode-1382:将二叉搜索树变平衡
leetcode-1382:将二叉搜索树变平衡
19 0
|
4月前
|
Go
golang力扣leetcode 96. 不同的二叉搜索树
golang力扣leetcode 96. 不同的二叉搜索树
17 0

热门文章

最新文章