Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
Subscribe to see which companies asked this question
思路分析:
递归。
class Solution {
public:
TreeNode *createTree(vector<int> &num, int left, int right)
{
if (left > right)
return NULL;
int mid = (left + right) / 2;
TreeNode *leftNode = createTree(num, left, mid - 1);
TreeNode *rightNode = createTree(num, mid + 1, right);
TreeNode *node = new TreeNode(num[mid]);
node->left = leftNode;
node->right = rightNode;
return node;
}
TreeNode *sortedArrayToBST(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
return createTree(num, 0, num.size() - 1);
}
};
本文介绍了一种将有序数组转换为高度平衡二叉搜索树(BST)的方法。通过递归方式,选择数组中间元素作为根节点,再递归地创建左右子树。此方法确保了树的高度平衡。
214

被折叠的 条评论
为什么被折叠?



