#include<stdio.h>#include<stdlib.h>#include<string.h>#define__MAX_LENGTH__20typedefstructSqStack{//调用栈intdata[__MAX_LENGTH__];inttop;}SqStack;typedefstructSqBiTree{//顺序存储二叉树elemTypedata[__MAX_LENGTH__];intlen;}SqBiTree;//按先序遍历一维数组作为存储结构的二叉树inttraTree(SqBiTree*t){SqStack*stack=calloc(sizeof(SqStack),1);stack->top=0;//将栈制空;introot;root=0;//指向根节点;while((stack->top)>-1){//当栈不为空时,进入循环while(root<__MAX_LENGTH__&&t->data[root]>='a'){//printf("%c,",t->data[root]);//访问节点stack->data[stack->top]=root;//节点入栈stack->top++;root=(root+1)*2-1;//检查下一个左子树;}if(stack->top>-1){//栈非空访问,遍历右子树;stack->top--;root=(stack->data[stack->top]+1)*2;}}}intmain(intargc,char*argv[]){SqBiTree*p=calloc(sizeof(SqBiTree),1);strcpy(p->data,"abcdefghij");traTree(p);return0;}