c语言二叉树的顺序存储结构,C语言 二叉树顺序存储结构的先序遍历算法

#include 

#include 

#include 

#define __MAX_LENGTH__ 20

typedef struct SqStack{//调用栈

int data[__MAX_LENGTH__];

int top;

}SqStack;

typedef struct SqBiTree{//顺序存储二叉树

elemType data[__MAX_LENGTH__];

int len;

}SqBiTree;

//按先序遍历一维数组作为存储结构的二叉树

int traTree(SqBiTree *t){

SqStack *stack = calloc(sizeof(SqStack),1);

stack->top = 0;//将栈制空;

int root;

root = 0;//指向根节点;

while((stack->top)>-1){//当栈不为空时,进入循环

while(root<__max_length__>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;

}

}

}

int main(int argc, char *argv[])

{

SqBiTree *p = calloc(sizeof(SqBiTree),1);

strcpy(p->data,"abcdefghij");

traTree(p);

return 0;

}

c语言二叉树的顺序存储结构,C语言 二叉树顺序存储结构的先序遍历算法_第1张图片

你可能感兴趣的:(c语言二叉树的顺序存储结构)