数据结构-链表、二叉树
数据结构-链表、二叉树
Nemaleswang
ACM退役狗一只
展开
-
Leetcode Check If a String Is a Valid Sequence from Root to Leaves Path in a Binary Tree
题目链接:Check If a String Is a Valid Sequence from Root to Leaves Path in a Binary Tree 题目大意:要求你去找到一条路径,要求这条路径上的值跟要求的arr数组长度和值都一样,并且这条路径是从根节点到叶子节点 题目思路:一个简单的dfs即可,我们可以知道,对于找到的路径,每个节点的层数就是他在数组中的第几个,所以可以记录...原创 2020-04-30 20:12:21 · 437 阅读 · 0 评论 -
Leetcode 124. Binary Tree Maximum Path Sum
题目链接:Binary Tree Maximum Path Sum 题目大意:要求在二叉树上找到最长路径 题目思路:给之前的二叉树思路是一样的,这条路径一定是某个节点的左子树+节点本身+右子树(左右子树可以为空,比如左右子树全为负数,还不如不要),所以我们接着做dfs即可,每个dfs返回的是某个节点左子树或者右子树的最长路径+自己本身,每次统计的时候可以对某个节点找到左右子树最长,然后统计对于当前...原创 2020-04-29 21:40:47 · 212 阅读 · 0 评论 -
Leetcode 1008. Construct Binary Search Tree from Preorder Traversal
题目链接:Construct Binary Search Tree from Preorder Traversal 题目大意:给定一个二叉树的前序遍历,要求给出对应的二叉搜索树 题目思路:我们可以知道,对于给定的前序遍历,遍历的顺序是前左右,所以对于一个前序序列,第一个数一定就是根节点,然后后面有一段序列是左子树,剩下的序列是右子树,又因为是二叉搜索树,左子树的所有节点都小于根节点,右子树的所有节...原创 2020-04-20 20:17:55 · 180 阅读 · 0 评论 -
Leetcode 543. Diameter of Binary Tree
题目链接:Diameter of Binary Tree 题目大意:问题很简单,要求你去找出一颗二叉树的树直径(树中最长路) 题目思路:对于树直径,我们首先可以想到这样的想法,我们在树中找一条最长路径,这条最长路径一一定是从一个叶子节点出发,到达另一个叶子节点,也就是说,实际上这一条路径一定是某一个非叶子节点的左子树高度加右子树高度,所以我们只需要在递归找树高度的情况下记录一下左右子树高度和即可 ...原创 2020-04-11 18:27:11 · 193 阅读 · 0 评论 -
Leetcode 1339. Maximum Product of Splitted Binary Tree
题目链接:Maximum Product of Splitted Binary Tree 题目大意:给定一个二叉树,切割某条边,会分割成两个不同的二叉树,要求切割出来的两个子树权值和的乘积最大 题目思路:我们可以知道,不管切割哪一条边,一定有一颗子树是某个节点的左右子树之一,那么剩下的权值就是另一个子树的权值,所以我们只需要找到所有节点的左右子树的权值和,然后用总权值和减去该子树的权值和,这就是两...原创 2020-02-04 13:58:18 · 341 阅读 · 0 评论 -
hdoj 6058(2017 Multi-University Training Contest - Team 3) Kanade's sum
题目链接:Kanade’s sum题目大意:给你一个n个数的数列,数列是n个数的某一个排列,枚举l,r,每个[l,r]区间里面第k大的数作为这个贡献,也就是算∑nl=1∑nr=lf(l,r,k)\sum_{l=1}^{n}\sum_{r=l}^{n}f(l,r,k)这个玩意,n的范围是5e5题目思路:暴力肯定T,没得说,因为是一个全排列,我们可以想到去算每个数是第k大的时候有多少次,然后这个东西怎么原创 2017-09-09 20:53:08 · 296 阅读 · 0 评论 -
hdoj 6215 Brute Force Sorting
题目链接:Brute Force Sorting题目大意:给你一个序列,要求a[i] <= a[i+1],不满足这个情况的数就得删掉,问最后的序列是什么题目思路:因为如果两个数不满足的话,不光后面那个,前面那个也得删掉,所以我们考虑用双向链表维护,用一个队列去维护这个双向链表的前继,普通链表维护后继,然后就可以做了 #include <map> #include <set> #include <cm原创 2017-10-07 20:50:24 · 273 阅读 · 0 评论 -
Leetcode 2. Add Two Numbers
题目链接:2. Add Two Numbers 题目大意:给你由两个链表组成得数,链表上得每个位置得值代表一个位得值,例如3->8->4就代表483这个值,然后两个链表相加,返回结果。 题目思路:简单题,每次相加得时候记录一次进位就可以了,只不过处理链表得时候比较麻烦,具体看代码 时间复杂度&&空间复杂度:O(max(n,m))&&O(n+m)(n,m分...原创 2019-08-18 21:21:51 · 177 阅读 · 0 评论