首页 > 其他分享 >L2-011 玩转二叉树

L2-011 玩转二叉树

时间:2024-03-31 10:34:54浏览次数:30  
标签:pre int al 011 L2 二叉树 root ssize

和L2-006是一样的。正常建树,只是在BFS的时候先放右儿子。
L2-006 树的遍历 https://www.cnblogs.com/chengyiyuki/p/18106375
代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 40;
int pre[N], in[N];
int L[N], R[N];
int build(int al, int ar, int bl, int br) {//先序 中序
	if (al > ar) return -1;
	int root = pre[al];
	int i;
	for (i = bl; i <= br; i++) {
		if (in[i] == root) break;
	}
	int Lsize = i - bl;
	int Rsize = br - i;
	L[root] = build(al + 1, al + Lsize, bl, i - 1);
	R[root] = build(al + Lsize + 1, ar, i+1, br);
	return root;
}
void BFS(int root) {
	queue<int> q;
	q.push(root);
	int flag = 0;
	while (!q.empty()) {
		int x =q.front();
		if (flag) cout << " ";
		cout << x;
		flag++;
		q.pop();
		if (R[x] != -1) q.push(R[x]);
		if (L[x] != -1) q.push(L[x]);
	}
}
int main() {
	int ssize;
	cin >> ssize;
	for (int i = 0; i < ssize; i++) {
		cin >> in[i];
	}
	for (int i = 0; i < ssize; i++) {
		cin >> pre[i];
	}
	int root = build(0, ssize - 1, 0, ssize - 1);
	BFS(root);
	return 0;
}

标签:pre,int,al,011,L2,二叉树,root,ssize
From: https://www.cnblogs.com/chengyiyuki/p/18106457

相关文章

  • L2-006 树的遍历
    先建树,然后遍历数组。这种方式比较消耗空间,适用于数据量小的情况,如果形成一条链,那将是致命的这个空间。#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intin[N],post[N];vector<int>tree(N,-1);voidbuild(introot,intstart,inted,intidx)......
  • wsl2 代理功能
    原文链接:https://blog.csdn.net/weixin_62355896/article/details/1344583301打开或创建WSL配置文件(位于C:/User/%你的用户名/.wslconfig),并添加以下内容:[experimental]autoMemoryReclaim=gradualnetworkingMode=mirroreddnsTunneling=truefirewall=trueautoProxy=true......
  • WSL2配置代理
    新建proxy.sh文件,内容如下:#!/bin/shhostip=$(cat/etc/resolv.conf|grepnameserver|awk'{print$2}')wslip=$(hostname-I|awk'{print$1}')port=7890PROXY_HTTP="http://${hostip}:${port}"set_proxy(){exporthttp_proxy=&......
  • PTA L2-039 清点代码库
    上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输......
  • PTA L2-040 哲哲打游戏
    哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切!为简化模型,我们不妨假设游戏有 N 个剧情点,通过游戏里不同的操作或选择可以从某个剧情点去往另外一个剧情点。此外,游戏还设置了一些存档,在某个剧情点可以将玩......
  • LC 104.二叉树的最大深度
    104.二叉树的最大深度给定一个二叉树root,返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。示例1:输入:root=[3,9,20,null,null,15,7]输出:3示例2:输入:root=[1,null,2]输出:2提示:树中节点的数量在......
  • L2-046 天梯赛的赛场安排 团体程序设计天梯赛-练习集 c++ 易懂 模拟
    天梯赛使用OMS监考系统,需要将参赛队员安排到系统中的虚拟赛场里,并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们,以便发放比赛账号。为了尽可能减少教练和监考的沟通负担,我们要求赛场的安排满足以下条件:每位监考老师负责的赛场里,队员人数不得......
  • 【数据结构】树与二叉树
    树与二叉树目录树与二叉树树二叉树二叉树的定义二叉树的性质二叉树--存储结构二叉树的顺序存储表示二叉树的链式存储表示二叉链表三叉链表双亲数组遍历二叉树先(根)序的遍历算法中(根)序的遍历算法后(根)序的遍历算法遍历二叉树——相关结论应用二叉树存放表达式求二叉树的......
  • 代码随想录算法训练营第二十三天(二叉树9)|669. 修剪二叉搜索树、108. 将有序数组转换为
    文章目录669.修剪二叉搜索树解题思路源码108.将有序数组转换为二叉搜索树解题思路源码538.把二叉搜索树转换为累加树解题思路源码669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值......
  • L2-047 锦标赛
    这题没做出来,查了一些博客,下面是我比较能接受的一种写法。读完题可以发现这是一个满二叉树,并且可以得到每场比赛失败者的信息(决赛是胜利者和失败者都可以得到)对于一场比赛,它的胜利者要么是左孩子中的胜利者,要么是右孩子中的胜利者,那我们就可以先假设是左孩子的胜利者,如果不行就......