ホームページ  >  記事  >  ウェブフロントエンド  >  順序付き配列を二分探索木に変換する方法

順序付き配列を二分探索木に変換する方法

坏嘻嘻
坏嘻嘻オリジナル
2018-09-15 09:25:162145ブラウズ

この記事の内容は、順序付き配列を二分探索木に変換する方法に関するものです。必要な方は参考にしていただければ幸いです。

質問

順序付き配列を二分探索木に変換する方法

##コード

/**
 * 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* sortedArrayToBST(vector<int>& nums) {
        if(nums.size()==0)
            return nullptr;
        if(nums.size()==1)
            return new TreeNode(nums[0]);
        int middle=nums.size()/2;
        
        auto root=new TreeNode(nums[middle]);
        vector<int> left(nums.begin(),nums.begin()+middle);
        vector<int> right(nums.begin()+middle+1,nums.end());
        
        root->left=sortedArrayToBST(left);
        root->right=sortedArrayToBST(right);
        
        return root;
        
    }
    
};

アイデア

再帰的メソッドを使用して、それぞれの配列にデータを追加しますtime 中央の値を現在のノードとみなし、左の値を再帰して左の子を生成し、右の値を再帰して右の子を生成します。

以上が順序付き配列を二分探索木に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。