給定一個不含重複元素的整數數組。一個以此數組構建的最大二叉樹定義如下

題目描述:

 

給定一個不含重複元素的整數數組。一個以此數組構建的最大二叉樹定義如下:

    二叉樹的根是數組中的最大元素。
    左子樹是通過數組中最大值左邊部分構造出的最大二叉樹。
    右子樹是通過數組中最大值右邊部分構造出的最大二叉樹。

通過給定的數組構建最大二叉樹,並且輸出這個樹的根節點。

Example 1:

    輸入: [3,2,1,6,0,5]
    輸入: 返回下面這棵樹的根節點:
     
          6
        /   \
       3     5
        \    /
         2  0   
           \
            1

注意:

    給定的數組的大小在 [1, 1000] 之間。

代碼:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
            if(nums.size()==0)return NULL;
            else if(nums.size()==1){
                TreeNode * node=new TreeNode(nums[0]);
                return node;
            }
            else{
                int max=0;
                for(int i=0;i<nums.size();i++){
                    if(nums[i]>nums[max])
                        max=i;
                }
                vector<int> left_num,right_num;
                for(int i=0;i<max;i++){
                    left_num.push_back(nums[i]);
                }
                for(int j=max+1;j<nums.size();j++){
                    right_num.push_back(nums[j]);
                }
                TreeNode * node=new TreeNode(nums[max]);
                node->left=constructMaximumBinaryTree(left_num);
                node->right=constructMaximumBinaryTree(right_num);
                return node;
            }
        }
    };
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章