#include <iostream>
#include <stdlib.h>
using namespace std;
struct BinTree
{
int data;
BinTree *Left,*Right;
};
void del(BinTree *p)
{
if(p->Left)
del(p->Left);
if(p->Right)
del(p->Right);
delete p;
}
BinTree *Creat(int *node, int &size, int pos)
{
if(pos>=size)
return NULL;
BinTree *t = new BinTree;
t->data=node[pos];
t->Left=Creat(node, size, pos*2+1);
t->Right=Creat(node, size, pos*2+2);
return t;
}
void DFS( BinTree*p)
{
if(!p)return ;
cout<<p->data<<" ";
DFS(p->Left);
DFS(p->Right);
}
int main(int argc, char *argv[])
{
BinTree *tree;
int node[]={/
1,2,3,4,5,6,7,8,9,10,11,12,/
13,45,15,16,17,18,19,20,21,/
22,23,24,25,26,27,28,29,30,31
};
int size = sizeof(node) / sizeof(node[0]);
tree=Creat(node, size, 0);
DFS(tree);
del(tree);
system("PAUSE");
return 0;
}
=====================================================================
引自:http://community.youkuaiyun.com/Expert/topic/3948/3948858.xml?temp=.7505304