03-树2 List Leaves

深入解析Android Qcom Camera HAL3架构与Camx线程模块 本文深入解析了Android Qcom Camera HAL3架构与Camx线程模块的核心原理。文章以高通芯片平台为例,剖析了从按下快门到生成照片的完整Camera流程分析,重点阐述了Camx框架中线程池、消息队列及Fence同步机制如何协同工作,以实现高效、稳定的多线程并发图像处理,为相机性能优化提供理论基础。 阅读详情

 

坚持!量变引起质变!

03-树2 List Leaves (25 分)

Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number of nodes in the tree -- and hence the nodes are numbered from 0 to N−1. Then N lines follow, each corresponds to a node, and gives the indices of the left and right children of the node. If the child does not exist, a "-" will be put at the position. Any pair of children are separated by a space.

Output Specification:

For each test case, print in one line all the leaves' indices in the order of top down, and left to right. There must be exactly one space between any adjacent numbers, and no extra space at the end of the line.

Sample Input:

8
1 -
- -
0 -
2 7
- -
- -
5 -
4 6

Sample Output

4 1 5
#include<iostream>
using namespace std;
#define Null -1;
typedef struct Node Tree;
struct Node {
	int left;
	int right;
	int tag;   //tag == 1 ,leaf
}T[10];

typedef struct QNode *Queue;
struct QNode {
	int *data;
	int pre, rear;
	int MaxSize;
};

Queue CreateQueue(int MaxSize) {
	Queue q = (Queue)malloc(sizeof(struct QNode));
	q->data = (int *)malloc( MaxSize * sizeof(int) );
	q->pre = NULL;
	q->rear = NULL;
	q->MaxSize = MaxSize;
	return q;
}

bool IsFull(Queue q) {
	return (
		(q->rear + 1) % q->MaxSize == q->pre
		);
}
bool AddQueue(Queue q, int n) {
	if (!IsFull(q)) {
		q->rear = (q->rear + 1) % q->MaxSize;
		q->data[q->rear] = n;
		return true;
	}
	else
		return false;
}

bool IsEmpty(Queue q) {
	return (
		q->pre == q->rear
		);
}

int DeleteQueue(Queue q) {
	if (!IsEmpty(q))
	{
		q->pre = (q->pre + 1) % q->MaxSize;
		return (q->data[q->pre]);
	}
	else
		return -1;
}
int BuildTree(int n) {
	int root = -1;
	char cl, cr;
	int check[10] = {0};   //check[i] == 0 即为根
	for(int i = 0; i< n ;i ++)
		{
		cin >> cl >> cr;
		if (cl != '-')
		{
			T[i].left = cl - '0';
			check[T[i].left] = 1;
		}
		else
			T[i].left = Null;
		if (cr != '-')
		{
			T[i].right = cr - '0';
			check[T[i].right] = 1;
		}
		else
			T[i].right = Null;
		if ((T[i].right == -1) && (T[i].left == -1))
			T[i].tag = 1;    //tag = 1 ,leaf
		else
			T[i].tag = 0;
	}
	for (int i = 0; i < n; i++) {
		if (check[i] == 0)
		{
			root = i;
			break;
		}
	}
	return root;
}

void ListLeaves(Tree T[], int N, int Root) {
	Queue Q;
	Q = CreateQueue(10);
	int i = 0;
	int out[10] = {-1};  //使用out进行存储和输出
	int *p = out;
	for (i = 0; i < 10; i++) {
		out[i] = -1;
	}
	AddQueue(Q, Root);   //add indices into the queue
	for (i = 0; !IsEmpty(Q);) {
		i = DeleteQueue(Q);
		if (T[i].tag == 1)
		{
			*p= i;
			p++;
		}
		if (T[i].left != -1)   AddQueue(Q, T[i].left);
		if (T[i].right != -1)  AddQueue(Q, T[i].right);
	}
	for ( i = 0; i < N; i++) {
		if (out[i + 1] != -1)
			cout << out[i] << ' ';
		else
		{
			cout << out[i];
			break;
		}
	}
}

int main() {
	int N,Root;  //N is the number of Nodes
	cin >> N;
	Root = BuildTree(N);
	ListLeaves(T,N,Root);

	return 0;
}

 建树->建队列->将两者联合起来,真不容易,看着别人写的程序很简单,自己写的时候才知道这里面有多少坑!加油!

DFI协议时序 参数名称典型值应用场景关键影响tcmd_lat1-2个时钟周期命令与地址锁存同步地址错误风险tphy_wrlat1-2个时钟周期写操作响应速度写带宽与延迟2-3个时钟周期写操作端到端延迟系统吞吐量1-2个时钟周期连续写命令间隔信号干扰与资源冲突tphy_rdlat1-2个时钟周期读操作响应速度读带宽与延迟trddata_en由CL决定(如0.41 ns)读数据返回时间系统延迟10-20 ps写数据与命令对齐数据丢失风险<1 µs低功耗模式切换。 阅读详情

相关推荐

嵌入式系统启动流程解析:ROM Code、Bootloader与启动代码的协同工作

本文深入解析嵌入式系统从通电到运行的完整启动流程,详细阐述了ROM Code、Bootloader与启动代码三者如何像接力赛般协同工作。ROM Code作为芯片固化的初始引导程序,负责硬件自检并加载Bootloader;Bootloader作为系统总指挥,初始化关键硬件并加载操作系统内核;启动代码则为C语言运行环境铺平道路。理解这三者的分工与协作,是进行系统移植和解决启动问题的关键。

dd012的博客 554

详解-03树2 List Leaves

题目来源: 中国大学MOOC-陈越、何钦铭-数据结构 题目详情: 译文: 给定一棵树,按照从上到下,从左到右的顺序列出所有叶结点。 输入格式: 每个输入文件包含一个测试用例。 对于每种情况,第一行给出一个正整数N(≤10)N(≤10)N(≤10),它是树中节点的总数。节点从000到N−1N-1N−1编号。 然后跟随NNN行,每行对应一个节点,并给出该节点左右子节点的索引。 如果孩子不存在,将在该位置放置一个“-”。 任何一对孩子都用空格隔开。 输出格式: 对于每个测试用例,按从上到下,从左到右的顺序在一行

Young824的博客 880

手把手教你用Cadence仿真12bit SAR ADC:从电路图到FFT频谱分析(含Simc 18mmrf工艺文件)

本文详细介绍了使用Cadence仿真12bit SAR ADC的全流程,包括电路搭建、仿真环境配置、瞬态仿真优化及FFT频谱分析。基于Simc 18mmrf工艺文件,提供从电路图到性能验证的实战指南,特别分享工程实践中的排错技巧和优化策略,帮助工程师高效完成ADC设计验证。

weixin_30832405的博客 405

PTA 03-树2 List Leaves

2、如何遍历树,并按要求输出叶子节点:由于题目要求是从上到下,从左到右,这意味着在遍历当前层的节点之前,需要先遍历完上一层的节点,这显然是层序遍历。层序遍历基于队列的数据结构实现,这里我使用的是数组模拟队列。大致意思就是:输入节点个数,然后按顺序(0到N-1)输入每个节点的左右子树的索引,要求输出叶子节点,顺序为从上到下,从左到右。1、创建树:由于是二叉树,我们可以选择用结构体数组去存树的节点以及左右孩子的索引。注意:这里对输出有要求,所以先将符合要求的节点放入vector中,最后一起输出。

2301_80635769的博客 1505

语言 拉丁超立方抽样_医学统计与R语言:间断时间序列分析(Interrupted time series regression)...

微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发Interrupted time series (ITS) analysis is a valuable study design for evaluating the effectiveness of population-level health interventions that have been implemented...

weixin_29300805的博客 3706

Win10家庭版没有Hyper-V?教你一招轻松解决(含避坑指南)

本文详细介绍了在Win10家庭版中启用Hyper-V的完整实战指南。通过DISM工具链绕过系统版本限制,无需重装系统即可完整启用所有Hyper-V组件,适用于开发者测试多系统环境和安全隔离应用场景。文章包含详细操作步骤、常见问题解决方案及性能优化配置,帮助用户轻松解决Win10家庭版没有Hyper-V的问题。

weixin_29239661的博客 496

03-树2 List Leaves (25分)

03-树2 List Leaves (25分)Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. Input Specification: Each input file contains one test case. For each case,

david_liang 2507

基于51单片机的贪吃蛇游戏设计

本科时候做的一个课程作业,自己打一个很简易的电路,比较有意思且易上手,故将之记录下来。(全套的仿真及代码,演示视频,课程报告以及PPT展示上传在优快云下载区) 一. 实验目的 (1) 通过对C51语言的理解,编写程序实现对贪吃蛇的有效控制; (2) 通过对51单片机硬件的学习,学会运用面包板,独立按键、点阵屏等,完成对完整电路的搭建过程; (3) 通过对Proteus仿真软件的学习,实现基于STC89C52单片机的8*8点阵贪吃蛇的硬件电路仿真。 二. 实验介绍 贪吃蛇是一款经典小游戏,其游戏的规则是:玩

山山の十三先生 2万+

C语言 03-树2 List Leaves

Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. Input Specification: Each input file contains one test case. For each case, the first line gives ...

m0_37407587的博客 764

SQL注入-靶场通关 Less 1-21

打开Burp工具--打开内嵌浏览器--进入靶场第六关--打开拦截--输入?id=1',如果是正确的,说明不存在注入点,如果错误,说明存在注入点,这里是错误的,需要加上注释--+,在回车看结果是正确的,说明找到了注入点。工具,打开内嵌浏览器,打开拦截,输入http://127.0.0.1/sqli-labs-master/Less-9,然后发送到。id=1'--+,后面都注释了,单引号不闭合,报错说明是数字型SQL注入。设置休眠时间为10s,如果执行SQL语句就会加载,说明正确,存在注入点。

weixin_72104324的博客 1392

sysbench安装(在线&离线)

sysbench下载、安装、编译和异常处理方法

m0_61066945的博客 8756

PTA-03-树2 List Leaves

1

Sukihasimoto的博客 209

【网络安全 | 渗透工具】Githack工具安装及使用教程详析

本文仅分享Githack工具基本安装及使用相关知识不承担任何法律责任。Git是一个非常流行的开源分布式版本控制系统,它被广泛用于协同开发和代码管理。许多网站和应用程序都使用Git作为其代码管理系统,并将其部署到生产环境中以维护其代码库。然而,在配置不当的情况下,可能会导致.git文件夹被直接部署到线上环境中,这可能会导致Git泄露问题。可通过githack下载泄露的Git存储库,以获取包含未加密密码、凭据和敏感信息的站点代码库。使用githack下载Git存储库的方法有两种。本文仅分享。

等风来 3万+
上一篇: 03-树1 树的同构
下一篇: Python爬虫requests包和xpath包总结
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值