#include <stdio.h> #include <stdlib.h> #include <string.h> #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__&&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; } } } int main(int argc, char *argv[]) { SqBiTree *p = calloc(sizeof(SqBiTree),1); strcpy(p->data,"abcdefghij"); traTree(p); return 0; }
C語言 二叉樹順序存儲結構的先序遍歷算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.