Algorithm 从数组的起始元素和结束元素构建二叉树

Algorithm 从数组的起始元素和结束元素构建二叉树,algorithm,data-structures,binary-tree,Algorithm,Data Structures,Binary Tree,我有一个数组,假设{10,1,10,9} 现在我要形成一个二叉树,起始节点为数组[0],这里是10,树结构如下 第一要素10 在图中,第一个元素是10,现在我必须选择左子元素和右子元素,所以第二个元素是我的左子元素,最后一个元素是我的右子元素。 如果1是我的左孩子,那么我还有10和9要处理,所以10将是左孩子,9将是作为父的1的右孩子,现在对于作为父的10,只剩下9,所以这将是左孩子,所以这棵树正在构建一个 我正在尝试使用递归,我有点弱,并试图学习,但我的代码没有按照我的想法工作,显然我做了一些

我有一个数组,假设{10,1,10,9} 现在我要形成一个二叉树,起始节点为数组[0],这里是10,树结构如下 第一要素10

在图中,第一个元素是10,现在我必须选择左子元素和右子元素,所以第二个元素是我的左子元素,最后一个元素是我的右子元素。 如果1是我的左孩子,那么我还有10和9要处理,所以10将是左孩子,9将是作为父的1的右孩子,现在对于作为父的10,只剩下9,所以这将是左孩子,所以这棵树正在构建一个

我正在尝试使用递归,我有点弱,并试图学习,但我的代码没有按照我的想法工作,显然我做了一些错误的事情,请指导我通过这一点

#include<iostream>
using namespace std;
int temparr[20];
void calculateMax(int arr[],int start, int end)
{
    if(start > end)
        return;
    cout<<arr[start]<<"  ";
    calculateMax(arr,start+1,end);
    calculateMax(arr,start,end-1);
}

int main()
{
    int arr[] = {10,1,10,9};
    temparr[0] = 10;
    int n = sizeof(arr)/sizeof(int);
    calculateMax(arr,0,n-1);
    //for(int i=0;i<20;++i)
    //cout<<temparr[i]<<"  ";
    return 0;
}
#包括
使用名称空间std;
int temparr[20];
void calculateMax(int arr[],int start,int end)
{
如果(开始>结束)
回来
库特