首页 > TAG信息列表 > lch

2022-1-25数据结构总结(3)

二叉树的建立 ​ #include<stdio.h> #include<string.h> struct Tree{ int data; struct Tree *Lch, *Rch; }BiTNode, *BiTree; //递归创建二叉树 BiTNode *CreatTree(BiTree &wroot){ int x; scanf("%d",&x); if(x==1){ //输入x=

《挑战程序设计竞赛——世界一流程序设计高手的经验总结》阅读笔记(第二章 初出茅庐——初级篇:数据结构与图论)

第二章 初出茅庐——初级篇:数据结构与图论 本章涉及的两个主题都与结构化有着莫大联系。 加工并存储数据的数据结构 作者给出的定义非常贴切: 数据结构是存储数据的方式,按照不同的方式存储数据,可以对数据做不同的高效操作。 下面按照二叉搜索树、满二叉堆和并查集的顺序对各结构和

数据结构—造树计划—二叉搜索树

目录数据结构—造树计划—二叉搜索树定义功能插入寻找删除完整代码其他参考资料 数据结构—造树计划—二叉搜索树 定义 struct node{ int val; node *lch, *rch; }; 功能 插入 使命:值val 思路:若值小于当前结点的值,则该点移向该节点的左儿子树(p->lch = insert(p->lch,x) 情

来学算法 #9 AVL树 (2) : 实现

在实现34重构后,我们只需要实现插入和删除数据的函数就可以完成AVL树的实现了,AVL的重构核心已经给出了,不再赘述。直接放上完成的代码。 #include <bits/stdc++.h> typedef struct node { int data; struct node *father; struct node *lch; struct node *rch

【题解】 「AHOI / HNOI2017」影魔 线段树+单调栈+扫描线+差分

Legend Link \(\textrm{to LOJ}\)。 Editorial 题意翻译之后就是有两个贡献方式: 区间端点为最大和次大时 \(+p_1\)。 区间端点为最大和非次大时 \(+p_2\)。 手玩一下就感觉这个贡献方式与单调栈出奇地像,不妨就用单调栈的角度来分析这个贡献。 先求出每个区间的贡献是 \(p_1,p_2,

三色二叉树 ---伪树形dp

题目描述 一棵二叉树可以按照如下规则表示成一个由0、1、2组成的字符序列,我们称之为“二叉树序列S”: 0 该树没有子节点 1S1 该树有一个子节点,S1为其二叉树序列 1S1S2 该树有两个子节点,S1,S2分别为两个二叉树的序列 例如,下图所表示的二叉树可以用二叉树序列S=21200110来表示。 你

数据结构---二叉搜索树

1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 6 struct node 7 { 8 int val; 9 node *lch,*rch; 10 }; 11 12 node *insert(node *p,int x) 13 { 14 if(p==NULL) 15 { 16 // 申请一个

P3372 【模板】线段树 1

#include<cstdio> using namespace std; struct ben { long long l,r,val,mark; }tr[400005]; long long a[100005]; void bt(long long x,long long l,long long r) { tr[x].l=l; tr[x].r=r; if(l==r) { tr[x].val=a[l]; return ;

设计模式-软件设计原则2-单一职责原则

单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更 的原因。假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。这样一来,这个 Class 存在两个导 致类变更的原因。如何解决这个问题呢?我

permu:莫队+线段树

这道题是几天前水过去的,现在快没印象了,水一发。 首先我们看到它让求解的是最长的值域 连续段长度,很好。 然后就想到了山海经,但但是我还没有做。 然后又想到了很久以前的一次考试的T3旅馆hotel(我是用暴力直接过的QAQ),正解也是线段树。 但是我还是想不到用线段树,因为我单纯的认为当

【6.10校内test】T2 医院设置

医院设置【题目链接】 感觉我超废 我是一个连floyd都不会写了的灵魂OI选手qwq(考场上写了半天spfa然后写炸了(微笑)) floyd的暴力: 1.先建树:用邻接矩阵存。存之前记得先初始化为INF    注意是无向图。然后注意自己到自己的情况dis值=0; 2.跑一遍floyd,求最短路; 3.枚举每个点建医院,相当

第五章学习小结

一、树的建立 首先要做的事当然是建树,各种操作都是基于一棵树上的   int BulidTree(node t[]){ bool check[100] = {false}; int n; char x, y; cin >> n; for (int i=0; i<n; i++){ cin >> t[i].name >> x >> y; if(x!=

第五章学习小结

  树是一种非线性结构,除它的基本定义和基本术语,我们还要学会其相关性质,其中以二叉树的性质为例:性质1 在二叉树的第i层上至多有2i-1个节点(i>=1);性质2 深度为k的二叉树至多有2k-1个结点(k>=1)性质3 对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1.   然后到了遍

第五章小结

1.第五章中有很多关于树的定义需要搞清楚,下面是几个我容易搞混的或者没有注意到的 (1)结点的度:结点拥有的子树数。 (2)树的度:树内个结点度的最大值 (3)树的深度:树中结点的最大层次称为树的深度或高度 (4)有序树和无序树:树中结点的各子树看成从左到右是有次序的,为有序树,否则为无序树 (5)完全二

[BZOJ 3514]Codechef MARCH14 GERALD07加强版 (CHEF AND GRAPH QUERIES)

[BZOJ3514] Codechef MARCH14 GERALD07加强版 (CHEF AND GRAPH QUERIES) 题意 \(N\) 个点 \(M\) 条边的无向图,\(K\) 次询问保留图中编号在 \([l,r]\) 的边的时候图中的联通块个数。 部分数据强制在线. \(1\le N,M,K\le200,000\) 题解 有点意思的LCT题. 原题好像不强制在线于是可