(BST)升序陣列變為BST樹

Kobe10發表於2017-02-03
  • 題目:給定一個陣列,其中元素按升序排序,將其轉換為高度平衡BST。
  • 思路:因為是升序陣列,那麼中間的數字一定是根節點值,然後在對左右兩邊的陣列進行查詢根節點的遞迴。一次處理左右子樹。
  • /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode *sortedArrayToBST(vector<int> &num) {
            return sortedArrayToBST(0, num.size()-1, num);
        }
        TreeNode *sortedArrayToBST(int left, int right, vector<int> &num){
            if (left > right)
                return NULL;
            int mid = (left + right)/2 + (left + right)%2 ;
            TreeNode *root = new TreeNode(num[mid]);
            root->left = sortedArrayToBST(left, mid-1, num);
            root->right = sortedArrayToBST(mid+1, right, num);
            return root;
        }
    };

     

相關文章