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)
  • 相关阅读:
    二进制拆分线段树
    2017 初赛PJ 错题解析
    线段树基操
    2015 初赛PJ 错题解析
    2016 初赛TG 错题解析
    拓扑排序找最大环最小环
    长乐集训合集
    java读取网页
    java下socket传图片
    java下socket传文件
  • 原文地址:https://www.cnblogs.com/qiyer/p/14753255.html
Copyright © 2011-2022 走看看