正解:构造 解题报告: 传送门! 交互题交互题!哇好新鲜啊QwQ 首先考虑最傻逼的做法,应该是每个人都能想到的 首先看一下它给的条件,考虑到完全二叉树的性质,就可以发现,如果给的邻居只有一个,说明是叶子,有两个,说明是根,有三个,说明是普通的节点 然后就分情况讨论鸭(以下内容都是从最差的情况即h=7为基础的讨论 如果运气好,问到了根,得嘞那就不用再问辣ans出来辣 如果问到了一个叶子节点,那就会给一个非根非叶子节点,就继续询问这个普通节点 如果问到了一个普通节点,就会有三个邻居,那就依次选,并利…
Jquery LigerUI Tree是Jquery LigerUI()的插件之一,使用它可以快速的构建树形菜单.呵呵 废话不说了,直入正题,下面介绍C#结合ligerui 构造树形菜单的两种方法 1.ID/PID格式 JqueryLigerUI官网上的例子是这样的: 复制代码  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DT…
实体类entity package com.ompa.biz.entity; import java.util.ArrayList; import java.util.List; public class TreeEntity { private String id; private String name; private String fatherId; private int level; private boolean isleaf; private List<TreeEntity>…
十年河东,十年河西,莫欺少年穷. 学无止境,精益求精 难得有清闲的一上午,索性写篇博客. 首先,我们需要准备一张表,如下范例: create table TreeTable ( TreeId ) not null primary key, NodeName ),--名称 FatherTreeId ),--父亲Id ) 为了节约时间,我直接沿用项目中的数据,作如下批量插入: insert into TreeTable(TreeId,NodeName,FatherTreeId) select [Sp…
第三篇中,我们通过维护节点的深度level,通过迭代所有的节点,只需要一次,就构造了树.  本篇,换一种方式. 好处是:不维护节点的深度level,增加和修改节点时,也不用维护.递归实现,代码比较清晰.  坏处是:节点较多的时候,性能可能不够好.不能直接查询到节点的深度level.当然,如果需要level字段,在递归过程中,是可以计算得到的.关于在递归过程中,计算level,后面有介绍这种方法. 关于树的遍历和查找,大家都有基础,上面描述了一些总体思路,代码中有注释,基本就不用再详细介绍了. /…
 这种方式,与第三篇中介绍的类似.不同的是,数据库中不存储节点的深度level,增加和修改时,也不用维护.而是,在程序中,实时去计算的. 至于后面的,按照level升序排序,再迭代所有的节点构造树,与第三篇中的方法,完全一样.因此,本篇和下一篇,只介绍如何计算level,不再介绍后面的具体实现了. 计算level,采用递归方式. // 计算所有节点的level public static List<Map<String, Object>> caculateLevel( List&l…
Object Tree 当以某个QObject为父类创建一个QObject时, 它会被添加到该父类的children列表中. 析构时, QObjet 会首先检查自己的children, 依次析构, 然后析构自己,再把自己从父类的children列表中删除.这是一个递归过程, 对于object tree来说, 析构是一个从叶子到根的过程. 如果使用堆存储object tree, 则可以以任何顺序构造.或者析构: 因为显式调用delete时, object tree会删除该节点: 没有调用delet…
好不容易又到周五了,周末终于可以休息休息了.写这一篇随笔只是心血来潮,下午问了一位朋友PAT考的如何,顺便看一下他考的试题,里面有最后一道题,是关于给出中序遍历和后序遍历然后求一个层次遍历.等等,我找一下链接出来...... 1127. ZigZagging on a Tree (30):https://www.patest.cn/contests/pat-a-practise/1127 突然想起以前学数据结构的时候如果给出一个中序遍历和一个后序遍历然后让你画出树的结构或求出先序遍历之类的题目,…
正解:构造 解题报告: 传送门! 这题麻油翻译鸭,,,那就先大概港下题意趴QAQ 构造一棵n个点,直径为d,每个点点度不超过k的树 这题其实我jio得还是比较简单的趴,,, 首先构造出一条直径,就是一条链,不说 然后思考,多的点要加哪儿呢,就是加在分支上嘛 那就是,能加就加,然后唯一的限制是保证分支加了之后不能长于直径 没了 做完辣 还是比较简单的嘛所以说 #include<bits/stdc++.h> using namespace std; #define ll int #define i…
http://codeforces.com/contest/322/problem/E E. Ciel the Commander time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Now Fox Ciel becomes a commander of Tree Land. Tree Land, like its name sai…
题目链接:G. New Roads 题意:给出n个结点,t层深度,每层有a[i]个结点,总共有k个叶子结点,构造一棵树. 分析: 考虑一颗树,如果满足每层深度上有a[i]结点,最多能有多少叶子结点 那么答案很简单,就是对(a[i]-1)求和再加1(每一层的结点都集中在上一层的一个结点上)   同理,我们考虑最少能有多少叶子结点,就是把上一个的答案再减去min(a[i]-1, a[i-1]-1)的求和,就是每一层的结点都尽可能的分散在上一层的结点 根据这个,那么如果要求有k个叶子节点,k在最大值与…
CF 1041E:http://codeforces.com/contest/1041/problem/E 题意: 告诉你一个树的节点个数,显然有n-1条边.已知去掉一条边后,两个集合中最大的节点值.问原来的树形状是怎么样的,构造不出来就输出NO. 思路: 这里说的“度数”可能有点不恰当.指以这个点引出一条链的长度,链上点的值小于这个点. 我想着这应该是可以作为一条链的,但是一直没有想到向节点度数上去想.首先,输入的一对值中,有一个一定是等于n的,那另一个值我们给它度数++.我们把度数为0的点从…
题意: 给你一个n个点m条边的图,对于第i条边,它的长度是2i,对于每一个顶点,它不是0类型,就是1类型.你需要找出来对于所有的"两个不同类型的点之间最短距离"的和 题解(参考:https://blog.csdn.net/wayne_lee_lwc/article/details/107851431): 因为20+21+22<23,即20+21+...+2n-1<2n 所以如果第i条边连接的两个点已经联通,我们就不需要用这条边.所以这里用并查集判断下 后面我们用 sum,以…
十年河东,十年河西,莫欺骚年穷...打错一个字哈.~_~ 接着上一篇博客,上一篇博客是=使用数据库结合LINQ构造的,为了方便理解,本篇采用泛型分组进行构造. 有兴趣的小虎斑可以参考上一篇博客:如何构造分层次的 Json 数据 本篇很简单,直接上代码 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using…
C - Upgrading Tree 我发现我构造题好弱啊啊啊. 很明显能想到先找到重心, 然后我们的目标就是把所有点接到重心的儿子上,让重心的儿子子树变成菊花图, 这个先把重心到儿子的边连到 i , 然后把 i 到 其 fa 的边连到重心的儿子上, 一直循环就好啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL p…
正解:构造 解题报告: 传送门 又是一道交互题!爱了爱了! 这题真的,极妙!非常神仙!就非常非常思维题! 直接说解法了吼 说起来实在是简单鸭 就是先问一个对方的联通块中的一个点在我这儿的编号,记为x 如果x就是我联通块中的肯定公共点就是x,continue,不讨论运气这么好的事儿x 然后问我的联通块中离x最近的点在对方那儿的编号,记为y 如果y属于对方的联通块,欧克,说明有公共点,就是y 如果不属于,那就麻油公共点,GG 解释一下吼 如果属于这个不用说趴显然 然后如果不属于,我们令x为树根,那么…
正解:构造 解题报告: 传送门! 这题首先可以画下图找下规律,,,然后通过找规律可以发现,最终的方案一定是一条主干+一些枝条,而且这些枝条的分杈一定小于等于2 明确一下主干的定义,最左边的节点和最右边的节点之间的路径为主干 如图…
There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree. The tree has N forks which are connected by branches. Kaka numbers…
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output This is an interactive problem. In the interaction section below you will find the information about flushing the output. The New Year tree of h…
 本篇介绍的方法,参考了网上的代码.在递归过程中,计算level,是受到了这种方法的启发. CSDN上有篇关于树的算法,目标是把一个无序的树,变成有序的. 我看了下代码,并运行了下,感觉是可行的. 我在想,既然可以把一棵树完整的遍历下来,那么应该可以知道每个节点的深度level.尝试了下,证明可行. 但是,我最终对比本篇的方法,和第5篇中的方法,基本一致.不同的地方是,这篇保存了遍历的顺序,实现了把无序的树变成有序的. 之所以第5篇和第6篇,分成2篇,是因为我自己原创的和借鉴别人的,还是分开比较…
def isValidTree(POTra): """ POTra :param list: :return: """ if not POTra: return True while len(POTra) > 1: index = [] n = len(POTra) for i in range(0, n-2): if POTra[i] != '#' and POTra[i+1] == '#' and POTra[i+2] == '#':…
题目链接 \(Description\) 有一棵高度为\(h\)的满二叉树,点从\(1\)到\(2^h-1\)编号(无序).每次你可以询问一个点的编号,交互库会返回其所有邻接点的编号.你需要在\(16\)次询问内确定这棵树根节点的编号. \(h\leq 7\). \(Solution\) 考虑随便问一个点,然后任意找个相邻点走.这样如果不往回走,最差情况下是一直走到一个叶子,这样找走两遍,扩展出一条叶子到叶子的链,就可以往上扩展了.这样最多扩展\(1+2+\ldots+7=28\)个点,但是确定…
传送门 首先如果一开始就找到了一个叶子,那么暴力去递归找它的父亲,每次随机一个方向(除了已知的儿子)走深度次,如果走到了一个叶子就不是这个方向 (设根的深度为 \(1\))这样子最后到达深度为 \(3\) 的点需要花费 \(11\) 次 注意到此时只有与该点距离不超过 \(2\) 的点可能是根,这样的没有询问过的点不超过 \(6\) 个 所以只要询问 \(5\) 次,一共 \(16\) 次 如果一开始不是叶子,那么尝试 \(dfs\) 到一个叶子,最后再套用上面的做法 注意每次随机一个方向的时候…
#include<bits/stdc++.h> using namespace std; typedef long long LL; struct BT{ int w; BT *L; BT *R; }; BT* Creat(int *post,int *in,int n) { BT* p; for(int i=0;i<n;i++) { if(post[n-1]==in[i]) { p=(BT*)malloc(sizeof(BT)); p->w=in[i]; p->L=Crea…
如果在节点的属性中,增加一个level属性,即树的深度,构造树会非常容易.前提是,增加和修改节点的时候,要维护level. 根节点的level为1,下一级为2,以此类推. 构造树的方法,主要有2个: // 按照level排序,根节点在上,子结点在下 public static List<Map<String, Object>> buildTree(List<TreeNode> list) { List<Map<String, Object>> r…
LeetCode 跟树结构相关的题目的测试用例中大多是通过String数组来构造树.例如{2,#,3,#,4,#,5,#,6},可以构造出如下的树(将树结构逆时针选择90度显示): 6            5        4    32 很直观地可以理解,输入的String数组是对树结构进行“层序”遍历得到的结果.以下代码用于构造树结构,并提供printTree用于打印树结构. package util; import java.util.LinkedList; import java.ut…
http://www.lydsy.com/JudgeOnline/problem.php?id=1036 (题目链接) 题意 动态维护树上两点间最大权值和权值和. Solution 裸树链剖分. 这一篇题解并不是本博客的重点.我在找本题的数据生成器的时候发现了一篇神奇的博客.关于如何制造出一棵树的数据,随机构造prufer. UPD:当年的自己真是脑残,竟然不会构造树的数据→_→ data #include<cstdio> #include<iostream> #include&l…
Go 数据结构--二分查找树 今天开始一个Go实现常见数据结构的系列吧.有时间会更新其他数据结构. 一些概念 二叉树:二叉树是每个节点最多有两个子树的树结构. 完全二叉树:若设二叉树的高度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树. 满二叉树:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树. 平衡二叉树:平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下…
为了接下来能更好的学习TreeMap和TreeSet,讲解一下二叉树,AVL树和红黑树. 1. 二叉查找树 2. AVL树 2.1. 树旋转 2.1.1. 左旋和右旋 2.1.2. 左左,右右,左右,右左 2.2. 删除 3. 红黑树 3.1. 插入 3.2. 删除 4. 参考文章 1. 二叉查找树 在讲AVL树和红黑树之前,作为铺垫必须先说下二叉树. 二叉树本身不必再说,一棵二叉树称为二叉查找树的条件如下: 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值. 若任意节点的右子…
题意 一个 \(n\) 个点 \(m\) 条边的无向连通图中每个点都有一个权值,现在要求给每条边定一个权值,满足每个点的权值等于所有相连的边权之和,权值可负. 题解 如果图是一棵树,那么方案就是唯一的,直接判一下就可以了,因为可以从叶子开始逐个确定回去. 否则先搞一棵 \(Dfs\) 树,先不管其他边,跑一遍,这时根节点可能还不满足条件(权值不为 \(0\) ). 这时考虑其他的边,一条非树边(返祖边)由于会形成一个环: 如果是偶环,无论这条边权值如何变,都不会对根节点产生贡献: 如果是奇环,当…