1523:从上往下打印二叉树 @jobdu

按树状输出二叉树 按树状输出二叉树 按竖向树状打印的二叉树 立即下载

基础题,就是一个普通的Level Order Traversal


题目1523:从上往下打印二叉树

时间限制:1 秒

内存限制:128 兆

特殊判题:否

提交:384

解决:156

题目描述:

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

输入:

输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, :n代表将要输入的二叉树元素的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。
Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。
Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。
Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号。
Ci=’z’表示第i个节点没有子孩子。

输出:

对应每个测试案例,
按照从上之下,从左至右打印出二叉树节点的值。

样例输入:
7
8 6 5 7 10 9 11
d 2 5
d 3 4
z
z
d 6 7
z
z
样例输出:
8 6 10 5 7 9 11


import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.LinkedList;
import java.util.Scanner;

public class S23 {
	static int loop = 0;
	public static void main(String[] args) throws FileNotFoundException {
		BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.in"));
		System.setIn(in);
		Scanner cin = new Scanner(System.in);
		
		while (cin.hasNextInt()) {
			int n = cin.nextInt();
			loop = n;
			int[] tmp = new int[n];
			for(int i=0; i<n; i++){
				tmp[i] = cin.nextInt();
			}
//			System.out.println(Arrays.toString(tmp));
			if(n == 0){
				System.out.println("NULL");
				continue;
			}
			cin.nextLine();
			TreeNode[] tree = new TreeNode[n];
			for(int i=0; i<n; i++){
				String s = cin.nextLine();
//System.out.println(s);
				String[] ss = s.split(" ");
				if(tree[i] == null){		// 特别注意这里!当且仅当为空时才需要赋值!
					tree[i] = new TreeNode(tmp[i]);
				}
				if(ss[0].equals("d")){
					int left = Integer.parseInt(ss[1]);
					int right = Integer.parseInt(ss[2]);
					if(tree[left-1]==null)
						tree[left-1] = new TreeNode(tmp[left-1]);
					if(tree[right-1]==null)
						tree[right-1] = new TreeNode(tmp[right-1]);
					tree[i].left = tree[left-1];
					tree[i].right = tree[right-1];
				}else if(ss[0].equals("l")){
					int left = Integer.parseInt(ss[1]);
					tree[left-1] = new TreeNode(tmp[left-1]);
					tree[i].left = tree[left-1];
				}else if(ss[0].equals("r")){
					int right = Integer.parseInt(ss[1]);
					tree[right-1] = new TreeNode(tmp[right-1]);
					tree[i].right = tree[right-1];
				}else if(ss[0].equals("z")){
					
				}
			}
			printTree(tree[0]);
			System.out.println();
		}
	}
	
	public static void printTree(TreeNode root){
		LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
		queue.add(root);
		while(!queue.isEmpty()){
			TreeNode cur = queue.remove();
			if(loop != 1){
				System.out.print(cur.val + " ");
			}else{
				System.out.print(cur.val);
			}
			
			loop--;
			if(cur.left != null){
				queue.add(cur.left);
			}
			if(cur.right != null){
				queue.add(cur.right);
			}
		}
	}
	
	public static class TreeNode{
		int val;
		TreeNode left, right;
		public TreeNode(int val_){
			val = val_;
		}
	}
}


c语言纵向打印出一棵树 c语言打印出一棵树,数据结构课本上是横向打印,这里使用纵向打印。 立即下载

相关推荐

VSAN闪存缓存磁盘故障处理指南-RAID0模式实战解析

本文详细解析了VSAN集群中RAID0模式下的闪存缓存磁盘故障处理全流程。通过模拟真实故障场景,从告警识别、数据重建策略到磁盘组重构,提供了手把手的实战操作指南,并深入探讨了RAID0缓存故障的独特影响与风险,为运维人员应对此类高性能存储架构的突发问题提供了专业解决方案。

assembly8low的博客 444

1387:斐波那契数列 @jobdu

题目1387:斐波那契数列 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2816 解决:827 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1 输出: 对应每个测试案例, 输出第n项斐波

2057

量子通信:初识量子城域网

对量子城域网的概念、作用、拓扑、建设内容等进行了较为全面的初步介绍。

量子领域相关话题 3344

C语言打印二叉树

基于上一篇,加入了树枝,看起来更直观,不过加这个树枝,算那个横线和空格花了我不少时间,不过最后能写出来,挺爽。 上一篇http://blog.youkuaiyun.com/xzongyuan/article/details/21945749 C语言打印二叉树 在广度遍历的时候,有非常繁杂的计算符号的方法,要看懂可能得花时间。 (1)整个设计的难点在sprintf函数运用。 sprint

Norton的专栏 9197

【遥感数字图像处理(朱文泉)】第四章 变换域处理方法

变换域的处理方法

甜子yu的博客 4310

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

C语言打印树基础

相信二叉树是学算法很重要的一门课,但是网上的实现都不好找,于是自己写来玩玩,造福后人。 基于前一篇http://blog.youkuaiyun.com/xzongyuan/article/details/21880013(实现广度遍历) 实现了二叉树的打印,要点: 1.要使得二叉树节点排列对齐,首先以个位数作为模型,计算出每个字符之间的间距是多少 // ***************0****

Norton的专栏 5738

YOLO26改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv11的检测头变化详解

在目标检测领域,小目标检测一直是一个具有挑战性的问题。算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在中添加小目标检测层,以提高对小目标的检测能力。原始模型结构如下: 二、有效特征层对应的检测头类别 2.1 P3/8 - small检测头 原始模型中的对应的检测头主要用于检测相对较小的目标。其特征图大小相对较大,空间分辨率较高。 适合检测尺寸大概在到像素左右的目标。 2.2 P4/16 - medium检测头 这个检测头对应的经过了更多的下采样操作,相比P3/

Limiiiing的博客 349

树的横向打印 纵向打印

横向打印树 水平打印树,选择右中左遍历的原因。右树在根节点的上面,左树在根节点的下面,按照从上到下的顺序打印就是右中左的遍历方式。 def printTree2(root, depth=0): s = '' if not root: return s sright = printTree2(root.right, depth+1) print('\033[5;30m|\033[0m '*depth+"\033[1;31m"+root.val+"\033[0

weixin_39255587的博客 570

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

【推荐100个unity插件】帮助你快速开发一款FPS游戏—— FPS Framework

FPS Framework 快速入门指南 FPS Framework 是一个 Unity 开发框架,可加速 FPS 游戏开发。主要功能包括: 第一人称控制器:基于 Character Controller 实现,提供移动、跳跃、下蹲等功能,支持自定义参数调整 渲染管线转换:内置 RP 转换器,支持 URP/HDRP 等渲染管线一键切换 库存系统: 采用双列表管理:物品列表(Items)和可收集物列表(Collectables) 支持自定义库存物品和可收集物类型 提供拾取/丢弃功能实现 快速开始: 通过预制件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2568

100行C代码终端打印树形结构

摘要: 这是一篇讲究套路的数据结构实战教学文,阅读需要约20分钟。 讲究套路之前,先来回答三个问题。 为什么要打印树形结构 树形结构是算法里很常见的一种数据结构,从二叉树到多叉树,还有很多变种。很多涉及到算法的工作,就需要程序员自己手动实现树形结构,但出于结构本身复杂性,不太容易做对,需要一种调试工具来检测正确性。一般的调试手段无非就是加打印,GDB上断点,写测试用例等,但这些局部以

zerokkqq的专栏 2626

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 266

收集的网站

算法与数据结构: http://www.cnblogs.com/woaishizhan/ http://www.cnblogs.com/LyonLys/ http://blog.youkuaiyun.com/z309241990/ http://blog.youkuaiyun.com/accelerator_/ http://blog.youkuaiyun.com/keshuai19940722/ http://www.

多看多听多总结 6432

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c语言打印二叉树树形结构(转载自:http://blog.youkuaiyun.com/xzongyuan)

#include #include #include #define NUM 5 typedef struct _node { int value; struct _node *left; struct _node *right; }TNode,*Tree; //add a *next in q_node is my purpose //other wise , we need

折花刀的博客 7842

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

1515:打印1到最大的N位数 @jobdu

题目1515:打印1到最大的N位数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:625 解决:323 题目描述: 给定一个数字N,打印从1到最大的N位数。 输入: 每个输入文件仅包含一组测试样例。 对于每个测试案例,输入一个数字N(1 输出: 对应每个测试案例,依次打印从1到

1934

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

1390:矩形覆盖 @jobdu

题目1390:矩形覆盖 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:696 解决:443 题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1 输出: 对应每个测试案例,

1755

1386:旋转数组的最小数字 @jobdu

题目1386:旋转数组的最小数字 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2738 解决:613 题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 输入: 输入可能包含多

1747

1513:二进制中1的个数 @jobdu

题目1513:二进制中1的个数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1341 解决:455 题目描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 输入: 输入可能包含多个测试样例。 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个

1682

1366:栈的压入、弹出序列 @jobdu

题目1366:栈的压入、弹出序列 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1157 解决:426 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是

1641

1522:包含min函数的栈 @jobdu

题目1522:包含min函数的栈 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:488 解决:164 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为一个整数n(1 接下来有n行

1636

1514:数值的整数次方 @jobdu

题目1514:数值的整数次方 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:377 解决:103 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 输入: 输入可能包含多个测试样例。 对于每个输入文件,第一行输入一个整数T,表示

1620
上一篇: Text Justification 文本对齐 @LeetCode
下一篇: 1367:二叉搜索树的后序遍历序列 @jobdu
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值