1. 程式人生 > >leetcode 108. 將有序陣列轉換為二叉搜尋樹

leetcode 108. 將有序陣列轉換為二叉搜尋樹

在這裡插入圖片描述 始終使用陣列中間的數為父節點,兩邊的子陣列構成兩個子樹。

TreeNode* sortedArrayToBST(vector<int> &nums)
	{
		int size_nums = nums.size();
		if (size_nums == 0)
		{
			return nullptr;
		}
		if (size_nums == 1)
		{
			TreeNode *p = new TreeNode(nums[0]);
		}
		auto iter_mid = nums.begin() + (size_nums - 1) / 2;
		TreeNode *root = new TreeNode(*iter_mid);
		//TreeNode *p_left = sortedArrayToBST(vector<int>(nums.begin(), iter_mid));
		//TreeNode *p_right = sortedArrayToBST(vector<int>(iter_mid + 1, nums.end()));
		vector<int>A1(nums.begin(), iter_mid);
		vector<int>A2(iter_mid + 1, nums.end());
		TreeNode *p_left = sortedArrayToBST(A1);
		TreeNode *p_right = sortedArrayToBST(A2);
		root->left = p_left;
		root->right = p_right;
		return root;
	}