給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。
本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。
示例:給定的有序鍊錶: [-10, -3, 0, 5, 9],
乙個可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面這個高度平衡二叉搜尋樹:
0
/ \-3 9
/ /
-10 5
c++**:
class solution
if (nums.empty())
return null;
int root_pos = nums.size() / 2;
treenode* root = new treenode(nums[root_pos]);
root->left = generatesubbst(nums, 0, root_pos);
root->right = generatesubbst(nums, root_pos + 1, nums.size());
return root;
} treenode* generatesubbst(vector& nums, int low, int high)
};
執行效率:
LeetCode 109 有序鍊錶轉換二叉搜尋樹
題目描述 給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜...
leetcode109 有序鍊錶轉換二叉搜尋樹
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...
leetcode109 有序鍊錶轉換二叉搜尋樹
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10 3,0,5,9 乙個可能的答案是 0,3,9 10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...