小學生一枚,自學信奧中,沒參加培訓機構,所以命名不規范、代碼不優美是在所難免的,歡迎指正。
標簽:
二叉樹、遞歸
語言:
C++
題目:
給定一個不重復的整數數組 nums 。最大二叉樹可以用下面的算法從nums遞歸地構建:創建一個根節點,其值為nums中的最大值。遞歸地在最大值左邊的子數組前綴上構建左子樹。遞歸地在最大值右邊的子數組后綴上構建右子樹。返回nums構建的最大二叉樹。
截圖:
代碼:
class Solution {
public:TreeNode* maxbinarytree(vector<int>& nums, int l, int r) {if (r - l == 0)return nullptr;TreeNode* root = new TreeNode(0);int maxidx = l;for (int i = l; i < r; i++) {root->val = max(root->val, nums[i]);if(root->val==nums[i])maxidx=i;}root->left = maxbinarytree(nums, l, maxidx);root->right = maxbinarytree(nums, maxidx + 1, r);return root;}TreeNode* constructMaximumBinaryTree(vector<int>& nums) {return maxbinarytree(nums, 0, nums.size());}
};