#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define __MAX_LENGTH__ 20typedef 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;
}

转载于:https://blog.51cto.com/yangzheng0809/1964688

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

  1. c语言二叉树的还原,由中序遍历和层次遍历还原二叉树。C语言实现

    经测,该代码已经修改正确,只需在void BuildTree(char *level,char *inorder,pBiTree T)这里的最后一个变量T改为引用即可.还有一个地方判断调用右子树的地方 ...

  2. c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版...

    习题集解析部分 第4章 串 --<数据结构题集>-严蔚敏.吴伟民版 源码使用说明  链接☛☛☛<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合 ...

  3. 二叉树非递归后序遍历算法(C语言)

    二叉树非递归后序遍历算法(C语言) 二叉树后序遍历的规律:左右根 后序非递归遍历中,访问根(子根)结点有两种情况 ①:遍历完左子树,需要遍历右子树,需要从栈中访问最顶上的根(子根)结点从而得到右子树的 ...

  4. 二叉树先序遍历算法--C语言

    第一次在CSDN上写博客,今天开启自己的编程之路.以前总觉得上课嘛,把老师讲的东西学会,考试能过就好了.但是后来发现,自己被这种想法坑惨了.知识点当时是学会了,但是随着考试的结束,学到的知识也一并还给 ...

  5. 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]

    二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...

  6. 二叉树的前中后序遍历(考试常考)

    二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根).         由于树是通过 ...

  7. 二叉树的非递归后序遍历(双栈法和双指针法,有图有真相)

    一,前言 本文是原创作品,可能存在不足,欢迎大家指正,礼貌交流,感激不尽. 二,思路 二叉树后序遍历不同于前序遍历和中序遍历,后序遍历是三者之间最难的.下面就让我们来梳理一下代码的逻辑,看看如何轻松地 ...

  8. 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历

    题目: 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第 ...

  9. 二叉树非递归后序遍历算法的一种简单思路

    首先从简单的例子开始 1 2 3 上图二叉树的后序遍历序列是"231", 颠倒一下就是"132", 而其前序遍历是"123" 有什么发现? ...

最新文章

  1. html表格标签模板 实现跨行和跨列
  2. matlab中隐含层缺省函数,Matlab双隐层的BP神经网络该如何创建
  3. matlab中句柄图性对像的设置
  4. 重拾C,一天一点点_3
  5. Python 写一个俄罗斯方块游戏
  6. python中属于有序序列的有_Python中的有序序列有哪些
  7. vue element container布局
  8. c++类与对象之默认成员函数
  9. pgAdmin 3 电脑管家清除后服务消失
  10. win10开启无线网卡服务器,Win10笔记本电脑无线网卡 教你如何开启Win10笔记本内置无线网卡...
  11. 电商产品之订单拆分规则与流程
  12. 全球及中国智能X光安检机行业研究及十四五规划分析报告
  13. 程序员的奋斗史(七)——沟通交流、表达能力的重要性
  14. __DSB()指令的作用
  15. Stable Diffusion Prompt用法
  16. 微信小程序 学习第一天
  17. 复制微信号并打开微信_理解信号并不那么复杂
  18. 青春三宝:书籍、时间和健康
  19. word模板填充数据
  20. 测一测自己的Sql能力之MYSQL的GROUPBY你弄懂了吗?

热门文章

  1. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建
  2. [翻译]创建ASP.NET WebApi RESTful 服务(9)
  3. [算法 笔记]2014年去哪儿网 开发笔试(续)第一题BUG修正
  4. UVA 10608-Friends
  5. 【ZZ】 ACM之歌
  6. Vuex状态管理方式
  7. Golang并发——并发技术Goroutine和channel的使用、定时器、生产者消费者、条件变量、select
  8. java web redis_java web redis使用(二)
  9. 7安装sql cent os server_Cent OS 7 编译安装 My SQL 5.7
  10. python py2exe_转:py2exe 生成 python 可执行文件