数据结构作业,输出树的每一条从根节点到叶节点的路径


#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{char data;struct tree *firstchild,*nextsibling;
}tree,*Tree;
typedef struct squeue
{Tree *data;int first,rear;int maxsize;
}Squeue;
int initsqueue(Squeue *S)
{S->data=(Tree *)malloc(sizeof(Tree)*100);S->first=S->rear=0;S->maxsize=100;return 1;
}
int enqueue(Squeue *S,Tree e)
{S->data[S->rear%S->maxsize]=e;S->rear=(S->rear+1)%S->maxsize;return 1;
}
Tree dequeue(Squeue *S)
{Tree e;e=S->data[S->first];S->first=(S->first+1)%S->maxsize;return e;
}
/*孩子兄弟链表创建树*/
void createtree(Tree &T)
{Squeue S;initsqueue(&S);char fa,ch;scanf("%c%c",&fa,&ch);while(ch!='#'){Tree P;P=(Tree)malloc(sizeof(tree));P->data=ch;P->firstchild=P->nextsibling=NULL;enqueue(&S,P);if(fa=='#')T=P;else{Tree e=S.data[S.first];Tree r;while(e->data!=fa){dequeue(&S);e=S.data[S.first];}if(e->firstchild==NULL){e->firstchild=P;r=P;}else{r->nextsibling=P;r=P;}}scanf("%c%c",&fa,&ch);}
}typedef struct snode
{char *data;int top;
}Snode;
int initstack(Snode *S)
{S->data=(char *)malloc(sizeof(char)*100);S->top=0;return 1;
}
int enstack(Snode *S,char e)
{S->data[S->top]=e;S->top++;return 1;
}
char destack(Snode *S)
{char e;e=S->data[S->top-1];S->top--;return e;
}
/*输出栈内元素*/
void print(Snode S)
{int i=0;while(i<S.top){printf("%c ",S.data[i]);i++;}
}
/*输出树中每一条从根结点到叶子节点的路径*/
void disptree(Tree T,Snode *S)
{while(T){enstack(S,T->data);if(T->firstchild)disptree(T->firstchild,S);else{print(*S);printf("\n");}destack(S);T=T->nextsibling;}
}
int main()
{Tree T;Snode S;initstack(&S);createtree(T);disptree(T,&S);
}

数据结构作业之输出树的每一条从根节点到叶节点的路径相关推荐

  1. 【leetcode-DFS】求根节点到叶节点数字之和/二叉树的最大路径和/路径总和/左叶子之和/树的直径

    文章目录 求根节点到叶节点数字之和 深度优先搜索 广度优先搜索 二叉树的最大路径和 DFS 路径总和1 深度优先搜索 广度优先搜索 路径总和2 回溯法 广度优先搜索 左叶子之和 递归 DFS 树的直径 ...

  2. 【数据结构与算法】之深入解析“求根节点到叶节点数字之和”的求解思路与算法示例

    一.题目要求 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字. 每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -&g ...

  3. 对于一颗给定的二叉树,输出所有从根节点到叶节点的路径

    给定二叉树,输出所有从根节点到叶节点的路径! 如上图二叉树所示,所有的路径应该是:[[10,1,5,12],[10,1,5,11],[10,1,7,9],[10,2,8,3],[10,2,8,20]] ...

  4. sql 树状结构中知道 父节点与孙节点_数据结构之(树)

    前言 在计算机科学中,树(英语:tree)是一种非线性的抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点组成一个具有层次 ...

  5. C语言数据结构:什么是树?什么是二叉树?

    点击蓝字 关注我们 前言 在之前的数据结构学习中,我们学习了顺序表.链表.栈.队列这几种结构 它们都是用链表或者数组的方式来实现的,主要考察我们对结构体的运用 今天让我们来学习一个新的数据结构,也就是 ...

  6. BUAA数据结构作业——基于Huffman码的文件压缩工具

    目录 前言 题目 问题描述 输入形式 输出形式 样例 问题分析 代码实现 前言 大家好哇!今天给大家分享一道Huffman码的实战应用题.Huffman码来源于Huffman树,假设二叉树有m个叶结点 ...

  7. 空间数据结构(四叉树/八叉树/BVH树/BSP树/k-d树)

    转载说明: 原作者:KillerAery 出处:https://www.cnblogs.com/KillerAery/p/10878367.html 1 四叉树/八叉树 (Quadtree/Octre ...

  8. 数据结构与算法笔记——树(Tree)

    什么是树 树的一些概念 根节点.叶子节点.父节点.子节点.兄弟节点,还有节点的高度.深度以及层数,树的高度. 你有没有发现, "树"这种数据结构真的很像我们现实生活中的" ...

  9. 面试题:mysql 一棵 B+ 树能存多少条数据?

    大家好,我是Tom哥~ 今日寄语:充满活力的新人,能让身边的人都重回初心,真是不可思议. mysql 的InnoDB存储引擎 一棵B+树可以存放多少行数据? (答案在文章中!!) 要搞清楚这个问题,首 ...

最新文章

  1. CentOS 6 安装极点五笔拼音输入法
  2. Apache Kafka:大数据的实时处理时代
  3. 2.4 matlab矩阵的特征值和特征向量
  4. keep 虚拟路线修改器_keep儿童版下载-keep儿童模式6.124.0手机版下载
  5. bzoj2820: YY的GCD
  6. data:text/html firefox钓鱼,JS DataURL 整理(一)
  7. html 提交后跳转页面,html 提交后跳转页面
  8. p语言是python吗-Python是纯的面向对象语言吗?
  9. 毕业生Markdown简历模板
  10. MySQL重复数据排序_排序数据以在MySQL中重复记录
  11. 一文说透Sentinel熔断策略、降级规则、流量控制
  12. flyingsaucer转换多个html,用 flying saucer 生成pdf文件 Css及html的问题
  13. krita windows编译源码
  14. 【python】tkinter界面化+百度API—聊天机器人(四)
  15. Hadoop安装错误:Cannot set priority of secondarynamenode process : xxxxx
  16. 华光昱能针对工程光纤布线的痛点?常见问题及解决方案
  17. c语言课后答案上海交通,上海交通大学继续教育学院2012春——程序设计(C)作业1(有答案)...
  18. shell脚本编程学习笔记4(xdl)——Bash常见环境变量
  19. 川奇吕电商概括短视频账号策划运营方案怎么写
  20. 数学一年级应用题_小学一年级数学下册应用题练习题归纳

热门文章

  1. 部署MooseFS分布式文件系统
  2. 利用VBA在Word中排出漂亮的代码
  3. linux原生安装postgresgl
  4. 简述验证Anaconda是否安装成功的两种方式和Anaconda环境变量配置过程
  5. [Err] 1813 - Tablespace ‘`XX`.`XX`‘ exists.
  6. css3 云朵飘动效果动画
  7. 千寻位置千寻知寸测试
  8. C语言对称矩阵的判定
  9. 刘强东的“长期主义”:做正确的事,敢于追求极致
  10. 项目初期如何确定项目的进度计划和资源需求?