POJ2255二叉树
题目大意就是给出你一个二叉树的前序和中序,要你求后序。
思路:二叉树的排序就是根据根节点的位置来定义的。所以找到二叉树的根节点是最重要的,二叉树的左子树和右子树也可以看成是二叉树,以此递归;
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 typedef struct Node{ 5 char ch; 6 struct Node *left; 7 struct Node *right; 8 }Node; 9 char mid[27],pre[27];//pre用来存放前序 mid用来存放中序 10 int n=-1; 11 void make_tree(int i,int j){//递归构造树,最重要的是找到根节点,再分别对左子树和右子树进行递归; 12 int k; 13 if(i>j) return; 14 n++; 15 for(k=i;k<=j;k++){ 16 if(pre[n]==mid[k]) break; 17 } 18 make_tree(i,k-1); 19 make_tree(k+1,j); 20 printf("%c",mid[k]); 21 /* 22 如果是求前序 23 prinf("%c",mid[k]); 24 make_tree(i,k-1); 25 make_tree(k+1,j); 26 */ 27 } 28 int main(){ 29 int i,j,k; 30 while(scanf("%s%s",pre,mid)==2){ 31 make_tree(0,strlen(pre)-1); 32 printf("\n"); 33 n=-1; 34 } 35 return 0; 36 }
//参考博客http://blog.csdn.net/cbs612537/article/details/8530294
转载于:https://www.cnblogs.com/OMG-By/p/5297550.html
POJ2255二叉树相关推荐
- 二叉树的前序、中序、后序非递归遍历 python实现
前言 python中二叉树的定义: class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None ...
- 二叉树中和为某一值的路径
前言 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数 ...
- 判断某数组是不是二叉树的前序遍历序列 python递归
code class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) <= 0 ...
- 翻转二叉树 c语言实现 递归 栈 队列
前言 题目比较好理解,就是翻转二叉树 代码 c语言实现 #include<stdio.h> #include<stdlib.h> #include<string.h> ...
- python实现二叉树的重建2 之由中序遍历和后序遍历重建
前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...
- 通过前序遍历和中序遍历构建二叉树 python实现
前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...
- 关于二叉树的层次遍历的花样(c++实现)
花样变形1::二叉树层次遍历但是分层打印 分析:与普通打印多了一个分层打印,其实只要在在层次遍历中多设置一个标记变量即可 代码如下: //二叉树的层次遍历 void levelTravel(BTNod ...
- LeetCode简单题之二叉树的层平均值
题目 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值.与实际答案相差 10-5 以内的答案可以被接受. 示例 1: 输入:root = [3,9,20,null,null ...
- LeetCode简单题之二叉树的最大深度
题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15, ...
最新文章
- 1900万印度人疯抢6万份工作,加班至死,这才是真正的就业崩溃!
- unsigned short占几个字节_ARM中,字、半字、字节分别是多少位?
- php 旋转图片 并保存,如何在PHP中旋转并保存图像
- php mysql 绑定变量,在MYSQL中,怎么用PDO绑定变量的方式插入数据?
- 嵌入式Linux系统运行流程图
- windows bat 批处理 !vm 合并快播文件
- 如何运用领域驱动设计 - 领域事件
- HDU 5439 Aggregated Counting
- Windows系统中常见的进程DOS操作命令
- 使用/调用 函数的时候, 前面加不加 对象或 this?
- mysql新手创建数据库_用MySQL创建数据库和数据库表(新手必看)
- 74HC573的使用方法
- 为什么Microsoft账号登录显示暂时停用你的账户_Apple ID 被锁定或停用怎么办?
- iOS 内购的最新讲解
- X2C 电商 设计思路
- 如何下载西门子PLC的CAD图库
- 书法练字帖纸——井字格问世
- python 一球从100m高度落下,一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?Python实例...
- 语音识别芯片LD3320介绍再续
- 如何设计一份优秀的游戏测试用例
热门文章
- 蒙哥马利幂模算法(二分快速幂)
- webassembly是什么?
- vue-router 3级路由
- java左手握右手_环保型燃料—丙烷(C3H8)曾用于北京奥运会“祥云”火炬燃料,下列有关烷烃的说法不正确的是()A.丙烷分子中三个...
- 区块链之java调用智能合约(二)部署智能合约
- WC2015 酱油记
- CCS DSP28335 asm(“ RPT #8 || NOP“); 报错Target ‘all‘ not remade because of errors.
- 一个例子说明内存数据库为什么比磁盘数据库要快
- WaitUntil和WaitWhile
- 《精通QTP-自动化测试技术领航》学习笔记7--环境变量