树论
JingleLiA
这个作者很懒,什么都没留下…
展开
-
二叉搜索树的范围和
题目链接:二叉树的范围和题目描述:给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示:树中的结点数量最多为 10000 个。最终的答案保证小于 2^31。题目分析:根据BST的特点,左子原创 2020-08-26 16:50:19 · 255 阅读 · 0 评论 -
112. 路径总和
题目链接:路径总和题目描述:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的路原创 2020-07-08 16:16:01 · 143 阅读 · 0 评论 -
将有序数组转换为二叉搜索树
题目链接:将有序数组转化为二叉搜索树题目描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9/ /-10 5题目分析:二叉搜索树的中序遍历为一个有序数组,题目只给出了一个有序序列,是无法唯一确定一棵树原创 2020-07-03 14:35:49 · 154 阅读 · 0 评论 -
二叉树的层序遍历
题目链接:二叉树的层序遍历这个题目意思不用阐述了,直接看代码:class Solution { public List<List<Integer>> levelOrder(TreeNode root) { if(root==null) return new ArrayList<>(); return bfs(root); } public List<List<Integer>> bfs(Tre原创 2020-06-21 15:42:49 · 218 阅读 · 0 评论 -
leetcode从先序遍历还原二叉树
题目链接:从先序遍历还原二叉树题目描述:我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。示例 1:输入:“1-2–3--4-5–6--7”输出:[1,2,5,3,4,6,7]示例 2:输入:“1-2–3—4-原创 2020-06-18 18:38:17 · 338 阅读 · 0 评论 -
leetcode二叉树的序列化
题目链接:二叉树的序列化题目描述:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树:1/ 2 3/ 4 5序列化为 “[1,2,3,null,null,原创 2020-06-16 20:25:49 · 411 阅读 · 0 评论 -
蓝桥杯小朋友排队
n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。 请问,要让所有小朋友按从低到高...原创 2018-03-24 14:02:06 · 412 阅读 · 0 评论 -
leetcode101对称二叉树
leetcode101对称二叉树题目链接:对称二叉树题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3题目分析:这个镜像对称直接写判断调价就好了,注意递归的出口/** * Definition for a binary tree node. * publi原创 2020-05-31 20:07:01 · 111 阅读 · 0 评论 -
字符串最长公共前缀--字典树实现
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。思路:利用字典树,可以实现公共前缀的查找,字典树是一种键值树,我其他的博客有详细介绍就不具体...原创 2020-05-03 18:18:05 · 697 阅读 · 0 评论 -
根据树的先序中序后序建立二叉树
思路:根据树先序中序后序的遍历特点,先找到根节点,再利用根节点去拆分左子树和右子树,递归的进行下去即可import java.util.Arrays;public class BuildTreeByOrders { //根据先序和中序建立二叉树 static TreeNode BuildTree2(int[] preorder,int[] inorder) { if(...原创 2020-05-01 22:19:44 · 461 阅读 · 0 评论 -
寻找树的最大路径--任意2个节点之间
思路:寻找一个树的最大路径,即任意两个节点之间经过的路径的最大值,这个值指的是所经过的点的值的和。一个点的最大路径,可以存在四种情况。①左子树②右子树③自己④自己加左右子,我们只要求出这四种情况下最大的,就是我们的答案,利用树的特点递归求解。package DSImp;import java.util.*;public class MaxTreeSum { static Sca...原创 2020-04-25 13:08:23 · 639 阅读 · 0 评论 -
判断二叉搜索树的后序遍历
思路:二叉搜索树的特点,左子树的值都比根节点小,右子树的值都比根节点大,后序遍历不用讲了吧,那么后序遍历得到的序列最后一位为根节点,然后根据BST特点,从头开始遍历,寻找左子树与右子树的分界点,找到之后,先判断右子树是否满足,不满足直接返回,再依次递归分别判断左子树与右子树是否满足条件。import java.util.*;public class postOrderTraverse {...原创 2020-04-17 00:36:12 · 227 阅读 · 0 评论 -
字典树--java 定义
public class Trie{ private int SIZE=26; private TrieNode root;//字典树的根 Trie() //初始化字典树 { root=new TrieNode(); } private class TrieNode //字典树节点 { private原创 2017-10-05 13:47:46 · 790 阅读 · 0 评论 -
还是畅通工程--最小生成树+并查集
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 当N为0时,输入结束,该用例不被处理。 Output对每个测原创 2017-11-12 14:32:27 · 386 阅读 · 0 评论 -
线段树简单入门模板--单点更新
package lanqiaobei;import java.util.*;/* * 线段树模板(以各个区间和为例, * 其他的稍微变动一下就好啦,比如求解max,那么就把sum换成max(a,b)) * 建树 * 单点/区间 查询 * 单点/区间 更新 * 主要思想:递归,树的左右子判断,区间判断 */public class Main { static原创 2017-12-04 23:00:00 · 315 阅读 · 0 评论 -
Colored Sticks --欧拉回路,并查集,字典树,
You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some color. Is it possible to align the sticks in a straight line such that the colors of the endpoints that touch a...原创 2017-10-06 17:37:56 · 452 阅读 · 0 评论 -
求解逆序数--归并排序+树状数组
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。 Input第1行:N,N为序列的长度(n <= 50000) 第2 - N + 1行:序列中的元素(0 <= Aii<= 10^...原创 2018-01-22 22:00:31 · 353 阅读 · 0 评论 -
是否为完全二叉树
7-13 是否完全二叉搜索树(30 分)将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式:输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空...原创 2018-03-17 20:51:39 · 309 阅读 · 0 评论 -
根据后序中序输出树并且求解路径权值和最小的叶子结点
题目描述: 给一颗点带权(权值均为正整数并且小于10000)的二叉树的中序和后序遍历,找一个叶子是的它到根的路径上的权和最小。如果有多解,输出叶子权最小的那个。输入样例两行, 第一行为中序遍历,第二行为后序遍历,输出叶子结点。样例输入:3 2 1 4 5 7 6 3 1 2 5 6 7 47 8 11 3 5 16 12 188 3 11 7 16 18 12 5样例输出:13分析:先构建树在利...原创 2018-06-06 21:11:21 · 766 阅读 · 2 评论 -
DNA Prefix--字典树
Given a set of n DNA samples, where each sample is a string containing characters from {A, C, G, T}, we are trying to find a subset of samples in the set, where the length of the longest common prefix原创 2017-10-05 13:17:31 · 528 阅读 · 0 评论