
数据结构-树
Dave_L
这个作者很懒,什么都没留下…
展开
-
二叉树分解子问题练习 LeetCode 1372. 二叉树中的最长交错路径 1373 二叉搜索子树的最大键值和
leetcode1372思路:对每一个节点 rt , 其最长交错路径可能有2种情况:以rt 为根:再细分可分为,第一条边是通往右孩子、或者左孩子非rt为根:和上面一样,第一条边通往右孩子、左孩子。共4种情况。每一个节点都需要考虑这4种情况,故递归解决,分解为子问题。/** * Definition for a binary tree node. * struct TreeNo...原创 2020-04-15 20:13:11 · 370 阅读 · 0 评论 -
二叉树基本操作-个人总结
二叉树:对于各节点值不重复建树(同时得到后序):(前序+中序建树)TreeNode* build( vector<int>pre , vector<int>in ) { if( !pre.size() || !in.size() ) { return NULL ; } TreeNode* rt = new TreeNode(pre[0]); for( int...原创 2020-02-26 10:38:13 · 823 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 A 组合数学,递推 F map模拟 G贪心 H树状数组 J LCA+最大生成树
H 题意:阅读L,区间内的书可以获得知识量: a[L] * ( R - L + 1 ) + a[L+1] * ( R - L ) ….. + a[R] * 1 给两个操作1 , L ,R ,查询看L,R页的书能够获得多少知识 2 , L , R : 将L位置的值更改为R思路:两个树状数组,一个维护长度为n-i+1,以i为左边界,n右边界的知识和。 一个维护前缀和。 当查询L,R内...原创 2018-09-09 20:27:27 · 464 阅读 · 0 评论 -
01字典树的应用51nod1295 XOR key 可持久化字典树
51nod1295 求l,r区间与x异或最大值。#include <bits/stdc++.h>using namespace std;const int AX = 5e4+66;int t[AX*35][2]; int sum[AX*35];int root[AX];int cnt ;void insert( int val , int &x , int...原创 2018-07-29 09:53:23 · 266 阅读 · 0 评论 -
历届试题 横向打印二叉树
历届试题 横向打印二叉树 时间限制:1.0s 内存限制:256.0MB 问题描述二叉树可以用于排序。其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。当遇到空子树时,则把该节点放入那个位置。 比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如下图所示,其中.表示空白。原创 2018-03-13 16:26:55 · 1462 阅读 · 0 评论 -
树的直径(最长路) 的详细证明
转载自:http://www.cnblogs.com/wuyiqi/archive/2012/04/08/2437424.html主要是利用了反证法:假设 s-t这条路径为树的直径,或者称为树上的最长路现有结论,从任意一点u出发搜到的最远的点一定是s、t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两遍广搜就可以找出树的最长路证明:转载 2018-03-11 11:30:11 · 590 阅读 · 0 评论 -
例题6-9UVA839 - Not so Mobile 递归访问二叉树
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=780思路:递归访问二叉树Code:#include #include using namespace std;bool solve(int &w){ int w1,d1,w2原创 2017-10-10 15:20:19 · 383 阅读 · 0 评论 -
例题6-8 二叉树的递归遍历 uva548
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=489思路:根据输入的后序遍历(最后的那个数)找到树根,然后再在给出的中序遍历中找到树根,这样就能根据后序中序遍历的数据递归构造左右子树,最后dfs求出最优解Code:#include原创 2017-10-08 16:46:37 · 452 阅读 · 0 评论 -
习题6-2 S-Trees UVA - 712 满二叉树
题目链接:https://vjudge.net/problem/UVA-712题意:根据输入的01序列判断最终会走到哪一片叶子(0左1右)(x1 x2 这些输入没用上)思路:a数组存储叶子值,mov是最初的起点1,根据输入的路径走(0就是2*mov,1就是2*mov+1,因为一个节点k的左右儿子节点分别是2*k,2*k+1),最后算出的叶子的对应值,减去上边的2的n次方个节点,就是对应的原创 2017-11-09 17:15:17 · 320 阅读 · 0 评论 -
例题6-7 树的层次遍历 BFS遍历
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=58&mosmsg=Submission+received+with+ID+20135244思路:根据输入的点建树,如果有重复赋值的则输出not complete ,然后就是原创 2017-10-08 11:27:30 · 1274 阅读 · 0 评论 -
线段树-扫描线
There are nnn rectangles on the plane. The problem is to find the area of the union of these rectangles. Note that these rectangles might overlap with each other, and the overlapped areas of these r原创 2017-09-24 17:37:19 · 468 阅读 · 0 评论 -
例题6-6 UVA679 - Dropping Balls 二叉树编号
原题:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=620思路:对于一个节点k,两个子节点分别是2*k (左) 2*k+1 (右),如果直接开数组模拟会超时,由前两个小球可以知道第一个左节点,第二个右节点。那么根据编号就能够得出落在哪个节点,奇数的原创 2017-10-08 08:28:32 · 422 阅读 · 0 评论