>웹 프론트엔드 >JS 튜토리얼 >순서 배열을 이진 검색 트리로 변환하는 방법

순서 배열을 이진 검색 트리로 변환하는 방법

坏嘻嘻
坏嘻嘻원래의
2018-09-15 09:25:162242검색

이 기사의 내용은 순서 배열을 이진 검색 트리로 변환하는 방법에 대한 것입니다. 특정 참조 값이 있으므로 도움이 될 수 있습니다.

Question

순서 배열을 이진 검색 트리로 변환하는 방법

Code

/**
 * 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;
        
    }
    
};

Idea

재귀를 사용할 때마다 배열의 중간 값을 현재 노드로 간주하고 왼쪽 값을 반복하여 왼쪽 자식을 생성하고 오른쪽 값을 하나는 재귀입니다. 아래로 내려가서 올바른 자식을 생성하세요.

위 내용은 순서 배열을 이진 검색 트리로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.