POJ 1577 Falling Leaves (子母二叉树,给出叶子节点的删除序列,求前序遍历)
题意:给出一棵字母二叉树删除叶子节点的序列,按删除的顺序排列。让你输出该棵二叉树额前序遍历的序列。
思路:先把一棵树的所有删除的叶子节点序列存储下来,然后从最后一行字符串开始建树即可,最后遍历输出。
这里为方便起见,将子母转化成整数值存储。
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> /* AC 题意:给出一棵字母二叉树删除叶子节点的序列,按删除的顺序排列。让你输出该棵二叉树额前序遍历的序列。 思路:先把一棵树的所有删除的叶子节点序列存储下来,然后从最后一行字符串开始建树即可,最后遍历输出。这里为方便起见,将子母转化成整数值存储。 */ using namespace std; const int maxn=30; char str[30][30];struct node{int l,r; //左儿子的值、右儿子的值。若值为-1,表示不存在左/右儿子。 }node[maxn];void dfs(int u,int v){if(v<u){//当u没有左儿子时,v赋值给u的左儿子,否则递归u的左儿子if(node[u].l==-1){node[u].l=v;return;}else{dfs(node[u].l,v);}}else{//当u没有右儿子时,v赋值给u的右儿子,否则递归u的右儿子if(node[u].r==-1){node[u].r=v;return;}else{dfs(node[u].r,v);}} } void dlr_print(int u){if(node[u].l==-1&&node[u].r==-1){printf("%c",u+'A');return;}printf("%c",u+'A');if(node[u].l!=-1)dlr_print(node[u].l);if(node[u].r!=-1)dlr_print(node[u].r); } int main() {int m,u,v;while(scanf("%s",str[0])!=EOF){for(int i=0;i<maxn;i++){node[i].l=node[i].r=-1;}m=1;while(1){scanf("%s",str[m]);if(str[m][0]=='*' || str[m][0]=='$')break;m++;}int rootval=str[m-1][0]-'A'; //根节点的值。for(int i=m-2;i>=0;i--){for(int j=0;str[i][j]!='\0';j++){v=str[i][j]-'A';dfs(rootval,v);}}//前序遍历输出 dlr_print(rootval);printf("\n");}return 0; }
转载于:https://www.cnblogs.com/chenxiwenruo/p/3349627.html
POJ 1577 Falling Leaves (子母二叉树,给出叶子节点的删除序列,求前序遍历)相关推荐
- POJ 1577 Falling Leaves(二叉查找树)
题目链接:http://poj.org/problem?id=1577 题目大意: 二叉查找树按照叶子节点,从下往上抹去该树,给出抹除字符序列,求该二叉树,并前序打印 解题思路: 最后抹除的是根节点, ...
- c#二叉树 取叶子节点个数_两种类似但是原理不同的算法求二叉树的所有叶子节点和...
技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完. 目前我选择C语言,Python和Java作为实现语言,因为这三种 ...
- java计算二叉树的节点最小值_求二叉树根节点到叶子节点路径和的最小值:遍历(递归+非递归)...
昨晚中兴笔试题,第一题是给定二叉树,每个节点的数据结构是 value,left,right,比较根节点到各个叶子节点路径和的大小,输出路径和的最小值.(补充:用ArrayList可以存储) 以前没做过 ...
- 获取二叉树的所有叶子节点、获取全树深度与左右子树深度求解:递归
树的左右子树深度 全树的深度 //因为我们现在能够不重复,不遗漏获取每一个节点,只有前中后序3种方法,所以,我们首先先写出 //先序递归获取树的深度 int hight = 0;//它可以在多个函数之 ...
- 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集
第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...
- python非递归前序遍历二叉树_LintCode66:二叉树的前序遍历(python)
66. 二叉树的前序遍历 给出一棵二叉树,返回其节点值的前序遍历. 样例 样例 1: 输入:{1,2,3} 输出:[1,2,3] 解释: 1 / \ 2 3 它将被序列化为{1,2,3} 前序遍历 样 ...
- java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...
前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...
- 【算法刷题1】二叉树的前序遍历
解题思路 什么是二叉树的前序遍历?简单来说就是"根左右",展开来说就是对于一颗二叉树优先访问其根节点,然后访问它的左子树,等左子树全部访问完了再访问其右子树,而对于子树也按照之前的 ...
- 二叉树的先中后序递归和非递归遍历(数据结构作业)
一.设计思想 我创建二叉树是用的先序创建,其中用'#'代表空节点. 1.递归先序遍历 (1)如果当前节点为空节点(用'#'代表空节点),结束当前函数 (2)打印当前节点 (2)递归当前节点的左子树 ( ...
最新文章
- HDU 2079 选课时间
- 通过命令行使用 JAX-WS调用webservice
- No identities are available for signing 的解决办法
- 某个网页一直不停刷新_利用浏览器做网页长截图
- perl 判断不包含某字符串
- ZT:Delphi源程序格式书写规范
- c语言删除功能,程序的删除功能有问题,不知怎么改
- 阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
- 如何设计 user 表?加入第三方登录呢?
- 《UNIX编程艺术》--读书笔记
- 计算机枚举法教案,简单枚举算法教案.ppt
- 利用scrapy工具,实现一键获取多个项目数据的功能
- Joint Autoregressive and Hierarchical Priors for Learned Image Compression文献复现
- mysql 索引 insert_Mysql 大批量数据insert or update与UQ索引
- 北大韦神等十人获奖,均分1000万元,达摩院2021青橙奖出炉
- [模拟电路]ADI放大器笔记 - 差分放大器单端输入电阻设计
- 【原创达人】ZUK HD-1 双发声单元圈铁耳机
- PairWork2必应词典测试补交作业-孙胜-刘明
- MIT 线性代数 习题课
- Arm 为智能摄像头提供安全的计算机视觉
热门文章
- 问懵逼:请站在 JVM 角度谈谈 Java 的锁?
- 一文了解OOM及解决方案
- Spring Cloud Gateway(过滤器)
- Object C为UILabel添加点击事件
- struts2框架入门
- -%3e运算符在c语言中的作用,C语言逻辑运算符知识整理
- 京东数科宣布机房巡检AI机器人落地金融机构数据中心
- plsql tables 没有表_InnoDB 层锁、事务、统计信息字典表 | 全方位认识 information_schema...
- python文件处理,python文件处理
- AI:Algorithmia《2021 enterprise trends in machine learning 2021年机器学习的企业趋势》翻译与解读