zoukankan      html  css  js  c++  java
  • (BST)升序数组变为BST树

    • 题目:给定一个数组,其中元素按升序排序,将其转换为高度平衡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;
          }
      };
  • 相关阅读:
    2018CodeM复赛
    poj3683
    bzoj3991
    bzoj2809
    bzoj1001
    bzoj1412
    计蒜之道2018复赛
    HDU2255
    bzoj1010
    bzoj2006
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6362489.html
Copyright © 2011-2022 走看看