#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语言 二叉树顺序存储结构的先序遍历算法
原创
©著作权归作者所有:来自51CTO博客作者Mr_haha的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
数据结构【完整代码】之(C语言实现【二叉树】创建、递归遍历(前序、中序、后序)、非递归先序遍历)
本文包含两个文件的代码和一张测试效果图:BinaryTree.h文件: 用于存储信息:存放函数、结构体、栈的函数实现
二叉树 数据结构 #include #define 进栈 -
二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
二叉树的定义:一种基本的数据结构,是一种每个节点的儿子数目都不多于2的树树节点的定义如下:// 树(节点)定义str.
二叉树遍历 前序中序后序遍历 递归 非递归 二叉树层序遍历 层序