#include<iostream>
using namespace std;
struct TreeNode{
int data;
TreeNode *left;
TreeNode *right;
};
int nums[1005];
int findMax(int l,int r)
{
int tmp=nums[l];
int pos=l;
for(int i=l+1;i<=r;i++)
{
if(tmp<nums[i])
{
tmp=nums[i];
pos=i;
}
}
return pos;
}
void CreateTree(TreeNode *root,int l,int mid,int r);
int main()
{
int a;
int len=0;
TreeNode *root;
while(scanf("%d",&a)!=EOF)
{
nums[++len]=a;
}
int mid=findMax(1,len);
CreateTree(root,1,mid,len);
return 0;
}
void CreateTree(TreeNode *root,int l,int mid,int r)
{
if(l>r)
{
root=NULL;
}
else
{
root=new TreeNode;
root->data=nums[mid];
int relMid=findMax(l,mid-1);
CreateTree(root->left,l,relMid,mid-1);
relMid=findMax(mid+1,r);
CreateTree(root->right,mid+1,relMid,r);
}
}
为什么创建二叉树后,root是NULL
CreateTree参数传递的都是指针