- 浏览: 155482 次
- 性别:
- 来自: 内蒙古
文章分类
最新评论
-
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 3150Sample Input:10 10 10 10 10 10 ... -
pat-1018 Public Bike Management 有问题
2012-02-26 19:55 3600最后一个case还过不了 == 为什么呢 思路dfs遍历到目 ... -
pat-1017* Queueing at Bank
2012-02-25 12:32 2116银行8点至17点开 有固定窗口数 来早了要等,没窗口要等,1 ... -
pat-1021* Deepest Root
2012-02-25 00:36 2764判断图是否都连接构成树,求使树高最大的根 实际上求图上两点间 ... -
pat-1022 Digital Library
2012-02-27 14:26 1815可能的查询 ID值进行map映射 以下代码有问题,原因 ... -
pat-1019 General Palindromic Number
2012-02-23 00:26 1095判断数字在给定进制下是否回文 并打出进制转换后系数 思路,将 ... -
pat-1026 Table Tennis
2012-02-19 19:19 0题意?? 多个桌可用 vip桌可用时 队中vip还是最小号 ... -
pat-1025 PAT Ranking
2012-02-19 15:45 1355不同地点一起排序 先组内排序,再全局排序 将小组添加进全局 ... -
pat-1024 Palindromic Number
2012-02-20 00:56 1998如果不是回文则进行逆序相加操作,打印出最后回文和操作次数 题 ... -
pat-1023 Have Fun with Numbers
2012-02-19 00:26 2566判断一个数乘2后是否是原数的一个排列 思路: int最大值 ... -
pat-1015 Reversible Primes
2011-09-28 20:08 1482将数字转成指定进制,再反序,判断原数和新数是否都是质数。 ... -
pat-1009 Product of Polynomials
2011-09-19 23:31 12161009:多项式乘积。 Sample Input 2 1 2 ... -
pat-1008 Elevator
2011-09-19 23:09 9421008: 电梯上升一层6秒,下降4秒,停留5秒。给出请求序列 ... -
pat-1007 Maximum Subsequence Sum
2011-09-19 22:59 15121007:连续和最大子串。 O(n)时间即可完成,不需存储空 ... -
pat-1006 Sign In and Sign Out
2011-09-18 23:35 14261006:给出进入和离开时间,求最早来和最晚走的人 Samp ... -
pat-1005 Spell It Right
2011-09-18 22:52 10991005:计算各个数字的和,并翻译成英文。 Sample I ... -
pat-1004* Counting Leaves
2011-09-18 22:35 17521004: 统计树的每一层上叶子节点的个数 Sample I ... -
pat-1010* Radix
2011-09-17 19:36 39541010: 给出两个数,已知一个数的进制,求是否可以在某进制下 ... -
pat-1014* Waiting in Line
2011-09-17 10:42 19271014: 排队服务问题,队列实现。 注意条件控制。 # ... -
pat-1012 The Best Rank
2011-09-16 23:58 19241012: 找出最佳排名 代码有点冗余。。。用了一些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 登陆页面 包含一棵静态树。 用户可以选择任何遍历(顺序,前顺序或后顺序),遍历的结果将显示在树下。 您也可以同时签出算法。 预购遍历 后...
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类提供...