题意: 分析: 这题一开始完全没有思路, 一直没有找出规律. 参考了http://www.cnblogs.com/Wade-/p/6358859.html 和 http://www.cnblogs.com/jerryRey/p/4622927.html 在dfs序列中,相邻的两个结点u,v之间(dfs_pos(u) + 1 =  dfs_pos(v)),有父子,兄弟,其他3种关系. 父子关系:在bfs中u,v并不是相邻, bfs_pos(v) > bfs_pos(u) , 那么u为v父亲, v为…
题意: 给定一个树的BFS和DFS,求这棵树. 分析: 拿dfs的序列,分成若干段,每一段相当一个子树,这样就可以利用bfs的序列去将dfs的序列分段,然后利用一个队列去存放每一段,不断求出子树即可. 代码: #include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int…
题目: 给出一棵树的BFS和DFS序列,输出这棵树中每个结点的子结点列表.BFS和DFS序列在生成的时候,当一个结点被扩展时,其所有子结点应该按照编号从小 到大的顺序访问. 思路: 一开始是想根据BFS和DFS序列来建树做这个题,但是利用BFS处理好分层之后就卡死了. 1.可以先处理好BFS中每个结点的距离. 2.在输入DFS时判断如果x点到根的距离比栈顶元素到根的距离多于1,那x就是栈顶元素的孩子结点,将x压入栈中.如果距离等于1说明x与栈顶元素是兄弟结点, 弹出栈定元素. 总结: 1.在DF…
搞了一晚上,错了,以后回头再来看 /* 对于每次更新,先处理其儿子方向,再处理其父亲方向 处理父亲方向时无法达到根,那么直接更新 如果能达到根,那么到兄弟链中去更新,使用bfs序 最后,查询结点v的结果就是dfs序线段树上的查询值+bfs线段树上的查询值 */ #include<iostream> #include<cstring> #include<vector> #include<queue> using namespace std; #define m…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以先确定当前这棵子树的dfs序的范围. 然后第一个元素肯定是这棵子树的根节点. 那么只要在这棵子树的范围里面枚举节点. 看看有没有下一个bfs序的节点即可. 如果有的话,那么就说明这个根节点有多个子树. 则加入到它的儿子里面去. 然后确定他的每一个儿子的子树的dfs序的范围. 一直往下递归就好. 用bfs模拟,这样可以保证每次进入某个节点的时候,bfs序的下一个节点就是这个子树的第一个儿子节点. [代码] /* 1.Shoud…
Problem UVA10410-Tree Reconstruction Accept:708  Submit:4330 Time Limit: 3000 mSec Problem Description You have just finished a compiler design homework question where you had to find the parse tree of an expression. Unfortunately you left your assig…
Little Valentine liked playing with binary trees very much. Her favorite game was constructing randomly looking binary trees with capital letters in the nodes. This is an example of one of her creations:                                               …
UVA.548 Tree(二叉树 DFS) 题意分析 给出一棵树的中序遍历和后序遍历,从所有叶子节点中找到一个使得其到根节点的权值最小.若有多个,输出叶子节点本身权值小的那个节点. 先递归建树,然后DFS求解. 代码总览 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <sstre…
Description You are to determine the value of the leaf node in a given binary tree that is the terminal node of apath of least value from the root of the binary tree to any leaf. The value of a path is the sum of valuesof nodes along that path.InputT…
2014 csu校赛 I 题,比赛的时候拿着他看了几个小时愣是没弄出好的方法,我们也想过统计出每个root的节点总数,然后减去离它d层的子节点的数目,即为答案.但是因为树的存储是无序的,所以每次为了找到子节点还是需要搜索,这肯定是承受不了的. 事实上,这个思路大体是对的,只是需要进行预处理,使得在找离它为d层的子节点能尽量节约时间,此外,如果找到了子节点挨个去减,也是很费时的,因为这些子节点必定处在同一层,他们的bfs序是连续的,故比较容易想到用前缀和来快速求得某一层的所有儿子的数目. 我们看这…