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

时间:2015-03-22 08:40:28

标签: algorithm data-structures binary-tree

我有一个数组假设{10,1,10,9} 现在我需要一个二进制树形式,其中start节点为array [0],这里是10,树结构将是这样的 第一个元素10 enter image description here

这里的图片中,第一个元素是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;
}

我的cout应该输出10 1 10 9 9 10 9 1 10 10 1但不是。

0 个答案:

没有答案