zoukankan      html  css  js  c++  java
  • 有序数组生成平衡搜索二叉树

    【题目】

    给定一个有序数组sortArr,已知其中没有重复值,用这个有序
    数组生成一棵平衡搜索二叉树,而且该搜索二叉树中序遍历的
    结果与sortArr一致。
    PS:平衡二叉树左右子树的高度差不能超过1 .

    算法:
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    typedef struct NODE
    {
        NODE * left;
        NODE * right;
        int value;
    } node;
    
    
    
    node* generate(vector<int> &sortArr, int start, int end){
        if (start>end)
        {
            return NULL;
        }
        int mid = (start+end)>>1;
        node * temp = (node *) malloc ( sizeof(node) );
        temp->value = sortArr[mid];
        temp->left = generate(sortArr,start,mid-1);
        temp->right = generate(sortArr,mid+1,end);
        return temp;
    }
    
    node* generateTree(vector<int> &sortArr){
        if(sortArr.empty()) return NULL;
        return generate(sortArr , 0, sortArr.size()-1);
    }
    
    int main()
    {
        vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12};
        node * rHead = generateTree(arr);
    
        return 0;
    }
    
    解决问题的能力很关键~(iOS开发交流群:219926126)
  • 相关阅读:
    C#深入浅出 修饰符(二)
    HDU 5785 Interesting
    HDU 5783 Divide the Sequence
    HDU 5781 ATM Mechine
    UVA 714 Copying Books
    uva 1471 Defense Lines
    UVA 11134 Fabled Rooks
    UVA 11572 Unique Snowflakes
    UVA 11093 Just Finish it up
    UVA 10954 Add All
  • 原文地址:https://www.cnblogs.com/qiyer/p/14753255.html
Copyright © 2011-2022 走看看