- 浏览: 157100 次
- 性别:
- 来自: 内蒙古
-
文章分类
最新评论
-
linest:
ethi_teye 写道id可能是0开头的,你用int保存再输 ...
pat-1022 Digital Library -
ethi_teye:
id可能是0开头的,你用int保存再输出,这些0就被忽略了。
pat-1022 Digital Library -
lixuanchong:
在lz的代码上稍作修改即可:
#include<iost ...
pat-1010* Radix -
air_sky:
确实。。result=a0*base^0+a1*base^1+ ...
pat-1010* Radix -
linest:
air_sky 写道
关于“方程只有一个正整数解,就可以用二分 ...
pat-1010* Radix
给后序和中序遍历
求层序遍历
Sample Input:7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
Sample Output:4 1 6 3 5 7 2
注意如果是按char型处理,还要考虑多字符情况 如12
在输入上要加以处理,用int比较简单
求层序遍历
Sample Input:7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
Sample Output:4 1 6 3 5 7 2
注意如果是按char型处理,还要考虑多字符情况 如12
在输入上要加以处理,用int比较简单
#include "stdio.h" #include "stdlib.h" typedef struct bt_node // 定义二叉树结点。 { char data ; struct bt_node * left ; struct bt_node * right ; } bt_node ; //搜索根在中序数组中的下标,若两个序列存在逻辑错误结束程序。 int search(char in[] , int inl , int inh , char ch) { int i ; for(i=inl;i<=inh;i++) { if(in[i]==ch) return i ; } printf("两个序列相互矛盾,无法构造二叉树!\n") ; exit(1) ; } //中根序列、后跟序列构造二叉树。 bt_node * create_bt1(char in[],int inl,int inh,char post[],int postl,int posth) { int mid ; bt_node * r ; if(inl>inh||postl>posth) return NULL; //递归结束条件。 mid = search(in , inl , inh , post[posth]) ; //搜索根在中序数组中的下标。 //printf("%d\n" , mid) ;可以通过这个语句查看有没有搜索正确。 r = (bt_node *)malloc(sizeof(bt_node)) ; r->data = post[posth] ; //构造根结点。 r->left = create_bt1(in,inl,mid-1, post,postl,postl+mid-inl-1) ; //构造左子树。 r->right = create_bt1(in,mid+1,inh, post,postl+mid-inl,posth-1) ; //构造右子树。 return r ; //返回根指针。 } bt_node * create_bt2(char in[],int inl,int inh,char pre[],int prel,int preh) { int mid ; bt_node * r ; if(inl>inh||prel>preh) return(NULL) ; mid = search(in , inl , inh , pre[prel]) ; //printf("%d\n" , mid) ;可以通过这个语句查看有没有搜索正确。 r = (bt_node *)malloc(sizeof(bt_node)) ; r->data = pre[prel] ; r->left = create_bt2(in,inl,mid-1, pre,prel+1,prel+mid-inl) ; r->right = create_bt2(in,mid+1,preh, pre,prel+mid-inl+1,preh) ; return(r) ; } void pre_order(bt_node * r) { if(r==NULL) return ; putchar(r->data) ; pre_order(r->left) ; pre_order(r->right) ; } void in_order(bt_node * r) { if(r==NULL) return ; in_order(r->left) ; putchar(r->data) ; in_order(r->right) ; } void post_order(bt_node * r) { if(r==NULL) return ; post_order(r->left) ; post_order(r->right) ; putchar(r->data) ; } //定义链队列结点。 typedef struct queue_node { struct bt_node * bt_node_pointer ; struct queue_node * next ; } queue_node ; //二叉树的层次遍历。 void wfs_order(bt_node * r) { queue_node * front , * rear , * mid ; front = (queue_node *)malloc(sizeof(queue_node)) ; rear = front ; mid = front ; //定义一个队列,并给予初始化。 rear->bt_node_pointer = r ; rear = (queue_node *)malloc(sizeof(queue_node)) ; mid->next = rear ; mid = rear ; //r进队。 while(front!=rear) //front!=rear指队列非空。 { r = front->bt_node_pointer ; printf("%d",r->data) ; //r出队,并打印r->data。 front = front->next ; if(r->left != NULL) //r->left进队。 { rear->bt_node_pointer = r->left ; rear = (queue_node *)malloc(sizeof(queue_node)) ; mid->next = rear ; mid = rear ; } if(r->right != NULL) //r->right进队。 { rear->bt_node_pointer = r->right ; rear = (queue_node *)malloc(sizeof(queue_node)) ; mid->next = rear ; mid = rear ; } if(front != rear) putchar(' '); } } int main() { int N; int num; scanf("%d",&N); getchar(); char* post = new char[N]; char* in = new char[N]; for(int i=0;i<N;i++) { scanf("%d",&num); post[i] = num; } for(int i=0;i<N;i++) { scanf("%d",&num); in[i] = num; } bt_node * root = create_bt1(in,0,N-1, post,0,N-1); wfs_order(root) ; putchar('\n') ; return 0; }
发表评论
-
pat-1016 Phone Bills
2012-02-27 00:01 3159Sample Input:10 10 10 10 10 10 ... -
pat-1018 Public Bike Management 有问题
2012-02-26 19:55 3615最后一个case还过不了 == 为什么呢 思路dfs遍历到目 ... -
pat-1017* Queueing at Bank
2012-02-25 12:32 2143银行8点至17点开 有固定窗口数 来早了要等,没窗口要等,1 ... -
pat-1021* Deepest Root
2012-02-25 00:36 2774判断图是否都连接构成树,求使树高最大的根 实际上求图上两点间 ... -
pat-1022 Digital Library
2012-02-27 14:26 1824可能的查询 ID值进行map映射 以下代码有问题,原因 ... -
pat-1019 General Palindromic Number
2012-02-23 00:26 1100判断数字在给定进制下是否回文 并打出进制转换后系数 思路,将 ... -
pat-1026 Table Tennis
2012-02-19 19:19 0题意?? 多个桌可用 vip桌可用时 队中vip还是最小号 ... -
pat-1025 PAT Ranking
2012-02-19 15:45 1370不同地点一起排序 先组内排序,再全局排序 将小组添加进全局 ... -
pat-1024 Palindromic Number
2012-02-20 00:56 2016如果不是回文则进行逆序相加操作,打印出最后回文和操作次数 题 ... -
pat-1023 Have Fun with Numbers
2012-02-19 00:26 2581判断一个数乘2后是否是原数的一个排列 思路: int最大值 ... -
pat-1015 Reversible Primes
2011-09-28 20:08 1491将数字转成指定进制,再反序,判断原数和新数是否都是质数。 ... -
pat-1009 Product of Polynomials
2011-09-19 23:31 12271009:多项式乘积。 Sample Input 2 1 2 ... -
pat-1008 Elevator
2011-09-19 23:09 9611008: 电梯上升一层6秒,下降4秒,停留5秒。给出请求序列 ... -
pat-1007 Maximum Subsequence Sum
2011-09-19 22:59 15321007:连续和最大子串。 O(n)时间即可完成,不需存储空 ... -
pat-1006 Sign In and Sign Out
2011-09-18 23:35 14331006:给出进入和离开时间,求最早来和最晚走的人 Samp ... -
pat-1005 Spell It Right
2011-09-18 22:52 11161005:计算各个数字的和,并翻译成英文。 Sample I ... -
pat-1004* Counting Leaves
2011-09-18 22:35 17791004: 统计树的每一层上叶子节点的个数 Sample I ... -
pat-1010* Radix
2011-09-17 19:36 39921010: 给出两个数,已知一个数的进制,求是否可以在某进制下 ... -
pat-1014* Waiting in Line
2011-09-17 10:42 19411014: 排队服务问题,队列实现。 注意条件控制。 # ... -
pat-1012 The Best Rank
2011-09-16 23:58 19411012: 找出最佳排名 代码有点冗余。。。用了一些stl容 ...
相关推荐
在计算机科学中,树是一种非线性数据结构,它由节点(或称为顶点)以及连接这些节点的边构成。树遍历是处理树数据结构时的重要操作,它包括多种方法,如前序遍历、中序遍历和后序遍历。本主题将深入探讨后序遍历,...
这些PAT甲级题目涵盖了多个计算机科学的基础知识点,主要包括字符串处理、哈希表的应用、图论问题和树结构的处理。接下来我们将对这些知识点进行详细解释。 1. **字符串处理**: - **修复键盘坏损** (1112 Stucked...
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the ...
- **树遍历(Tree Traversals)**:讨论了遍历树的三种方法:前序遍历、中序遍历和后序遍历。 - **二叉搜索树(Binary Search Trees)**:详细解释了二叉搜索树的原理及其操作。 - **关键术语(Key Terms)**:总结了与树...
标题 "7-1 Tree Traversals Again_DS_pta_C++_AgainAgain_" 指向的是一个关于数据结构(DS)的问题,特别是关于树遍历的议题,它源自编程训练平台 PTA(Programming Training Arena)的一个练习。"C++" 暗示了这个...
- **遍历和路径(Traversals and paths)**:图数据库的查询通常涉及遍历图的节点和关系,获取特定的路径。 - **模式(Schema)**:定义了节点、关系以及它们属性的数据类型和结构约束。 - **命名规则和建议(Naming...
- **关键概念解释**:包括视景器(Viewer)、场景树(Scene Graph)、相机(Camera)、事件遍历(Event Traversal)、更新遍历(Update Traversal)和渲染遍历(Rendering Traversals)等。 #### 数据处理核心流程解析 ##### ...
思路后序和中序构造二叉树唯一一个注意的地方,在注释中。// 注意这里是pos-right_num-1而不是想当然的pos_inr-1,这两个的位置并不一定对应。
在C++编程中,数据结构和算法的设计原则是构建高效、健壮且可扩展应用程序的基础。本主题将深入探讨如何利用现代C++的功能来实现这些目标。以下是一些关键的知识点,涵盖了标题和描述中提到的领域: ...
本题库答案主要聚焦于树的遍历,特别是"Tree Traversals Again"这一主题,这通常涉及到深度优先搜索(DFS)和广度优先搜索(BFS)两种策略。 首先,我们要理解树的基本概念。树是由n(n>=1)个有限节点组成一个具有...
This repository contains various classic algorithms about ordenation, graph traversals, dynamic programing and some crypto related stuff as well. 在这个仓库中: - Peak finding (1D/2D) - Binary ...
cd BinaryTree遍历 npm安装 npm开始 浏览到htpp:// localhost:3000 登陆页面 包含一棵静态树。 用户可以选择任何遍历(顺序,前顺序或后顺序),遍历的结果将显示在树下。 您也可以同时签出算法。 预购遍历 后...
11. Tree Traversals Again 12. Root of AVL Tree 13. Complete Binary Search Tree 14. 二叉搜索树的操作集 15. 堆中的路径 16. File Transfer 17. Huffman Codes 18. 列出连通集 19. Saving James Bond - Easy ...
Binary_tree_order_traversals 在该项目中,我们可以看到树的顺序,前顺序和后顺序。 该程序将打开一个菜单,并允许用户通过一个接一个地导入数据(节点)来创建他/她的树: '''0。退出 插入 展示 搜索 为了 预购...
1. **通用树遍历**(General Tree Traversals): - 预序遍历(Preorder Traversal):首先访问根节点,然后递归地对左子树进行预序遍历,最后遍历右子树。对于非二叉树,预序遍历依然适用,先访问根,再遍历其每个...
中国大学MOOC上浙大的《数据结构》广受好评,原因有二,一是基础,简单易懂,老师讲得也清楚,另一大优点就是配套的...Tree Traversals Again 树的遍历 中等 是否同一棵二叉搜索树 BST的建立与遍历 简单 Root of AVL T
Tree Traversals Again”可能包含树的不同遍历方法,如前序遍历、中序遍历和后序遍历,这些都是理解树结构的关键。 “05-图3. 六度空间 (30)”可能探讨社交网络中的人际连接,六度空间理论指出每个人与其他人之间...
Tree traversals, search Stack Queue Graph traversals(BFS, DFS) 最短路径数学题 从之前的采访中吸取的错误和教训: 调度: 更加注意时间安排,在公司现场面试前保持2-3天的开放时间。 除非非常关键,否则不要立即...
4. Tree Traversals(树遍历):树遍历包括前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。这些遍历方法在操作树结构时非常有用,例如复制树、打印树、计算表达式树等。 5. Calculator_Stack...
2. **Traversals**:AccumuloGraphs中的核心操作,用于遍历图中的节点和边。开发者可以自定义traversal策略以适应不同的算法需求。 3. **Vertex**和**Edge**:图的基本元素,AccumuloGraphs中的Vertex和Edge类提供...