树的遍历(前序,中序,后序遍历)
来源:互联网 发布:淘宝联盟怎么赚佣金 编辑:程序博客网 时间:2024/05/22 16:43
前序遍历(Preorder):根节点,左子树,右子树的顺序
中序遍历(Inorder):左子树,根节点,右子树的顺序
后序遍历(Postorder):左子树,右子树,根节点的顺序
#include <iostream>#include <cstdio>#define Max 100000#define NIL -1using namespace std;int n;struct node{ int p; //根节点 int l; //左节点 int r; //右节点}T[Max];//前序遍历void Pre(int u){ if(u == NIL) return ; printf(" %d",u); //根节点 Pre(T[u].l); //左子树 Pre(T[u].r); //右子树}//中序遍历void In(int u){ if(u == NIL) return ; In(T[u].l); //左 printf(" %d",u); //根 In(T[u].r); //右}//后序遍历void Pos(int u){ if(u == NIL) return ; Pos(T[u].l); //左 Pos(T[u].r); //右 printf(" %d",u); //根}int main(){ int i; int v,l,r,root; scanf("%d",&n); for(i=0;i<n;i++) T[i].p = NIL;//节点初始化每个节点单独存在 for(i=0;i<n;i++) { scanf("%d%d%d",&v,&l,&r); //输入节点,该节点的左节点,右节点 //构造树 T[v].l = l; //v 节点的左节点 = l T[v].r = r; //v节点的右节点 = r if(l != NIL) //左节点存在 T[l].p = v; //更新根节点 if(r != NIL) //右节点存在 T[r].p = v; //同理 } for(i=0;i<n;i++) if(T[i].p == NIL) // root = i; //前序 printf("Preorder\n"); Pre(root); printf("\n"); //中序 printf("Inorder\n"); In(root); printf("\n"); //后序 printf("Postorder\n"); Pos(root); printf("\n"); return 0;}
阅读全文
0 0
- 树的前序遍历,中序遍历,后序遍历,层次(广度)遍历
- 二叉树的遍历(前序遍历、中序遍历、后序遍历)
- 树的前,中,后 序遍历
- 树 前序遍历,中序遍历,后序遍历
- 二叉树的前序遍历,中序遍历和后序遍历(c#)
- 二叉树的遍历 前序遍历 中序遍历 后序遍历
- 二叉树的遍历:前序遍历、中序遍历和后序遍历
- 二叉树遍历(Java)---前序遍历,中序遍历,后序遍历
- 二叉树遍历(前序遍历,中序遍历,后序遍历)
- 二叉树的遍历,二叉树的创建、前序遍历、中序遍历、后序遍历 (转)
- 【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)
- 树:前序建树,前序遍历,中序遍历,后序遍历,层序遍历
- 二叉树的遍历(前、中、后序)
- java实现根据前序遍历构建二叉树(前序遍历、中序遍历、后序遍历)
- 树的前序遍历、中序遍历与后序遍历的互相求解
- 二叉树的前序遍历,中序遍历,后序遍历以及相互之间的求法
- 根据树的前序遍历和中序遍历构造树,输出后序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 百度ICML论文:端对端中英文语音识别
- YY LIVE:直播之争由内容定胜负 PUGC见高低
- 随机长度字符串
- 深度学习Matlab工具箱代码注释——MnistTest.m
- 【正一专栏】足球与政治无关又有关,但巴萨怎样都不会离开西甲
- 树的遍历(前序,中序,后序遍历)
- 关于Unity中的资源管理,你可能遇到这些问题
- Postgres log_line_prefix 设置日志输出格式 log_line_prefix 设置日志输出格式
- linux快捷操作
- 51 nod:1080
- 数字证书原理
- 乐视2.5亿美元买下硅谷300亩地,建立全球总部?
- 特斯拉金桥“绯闻”已辟谣,可为何非要在中国建厂
- 除了更换一个全新Logo,易到在这场发布会上还讲了什么故事