leetcode 108. 將有序陣列轉換為二叉搜尋樹
阿新 • • 發佈:2018-12-10
始終使用陣列中間的數為父節點,兩邊的子陣列構成兩個子樹。
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; }