#include "stdafx.h"
#include <stack>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//构建
完全二叉树,层数是三,7个节点
int a[7] = {0,1,2,3,4,5,6};
//
前序遍历,先访问左儿子,再访问自己,再访问右儿子
//左儿子的位置是自己
游标*2+1,右儿子是自己的游标*2+2
//队列作为缓冲
stack<int> Temp;
Temp.push(0);//根节点
while(!Temp.empty())
{
int node = Temp.top();
if(2*node+1 <6)//有左儿子
{
Temp.push(2*node+1);
}
else
{
cout<<a[node]<<endl;
Temp.pop();
if(Temp.empty())
{
getchar();
return 0;
}
int parent = Temp.top();
cout<<a[parent]<<endl;
Temp.pop();
Temp.push(2*parent+2);
}
}
getchar();
return 1;
}