码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-12 23:11:43      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:c语言   二叉树   非递归   

#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;
}

技术分享

本文出自 “android_home” 博客,请务必保留此出处http://yangzheng0809.blog.51cto.com/6024606/1964688

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

标签:c语言   二叉树   非递归   

原文地址:http://yangzheng0809.blog.51cto.com/6024606/1964688

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!