1. 程式人生 > 其它 >最大二叉樹

最大二叉樹

技術標籤:傻逼二叉樹

最大二叉樹
這個題與105,106的區別就是隻有一個數組
但是也可以構造因為根節點是找最大的然後進行劃分
所以不需要像之前那樣兩個陣列來確定根節點然後劃分

class Solution {
public:
    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
     return traversal(nums,0,nums.size());
    }
    TreeNode*traversal(vector<int>&nums,int left,int right)
{ // 左右區間如果沒有數就返回空 if(left>=right) return NULL; //找到分割點的座標(最大值的座標 int maxvalueindex=left; for(int i=left+1;i<right;i++) { if(nums[i]>nums[maxvalueindex]) { maxvalueindex=i; } } //構造二叉樹
TreeNode *root=new TreeNode(nums[maxvalueindex]); //在左邊區間找最大的 root->left=traversal(nums,left,maxvalueindex); //在右邊區間找最大的 root->right=traversal(nums,maxvalueindex+1,right); return root; } };