关于树
一些关于树的知识
youngsea8
喜欢学习!
展开
-
剑指 Offer 36. 二叉搜索树与双向链表 中序遍历,转化成双向循环链表
剑指 Offer 36. 二叉搜索树与双向链表 思路 思路,中序遍历的时候顺便修改left和right的指针。 官方题解 代码 class Solution { public: Node*head=NULL,*pre=NULL; void solve(Node*root){ if(root==NULL){ return; } solve(root->left); if(pre!=NULL){原创 2021-04-21 15:42:19 · 113 阅读 · 0 评论 -
c++ STL容器的使用
make_heap()等的使用 c++ STL容器中heap的使用 本文介绍如何使用STL里的heap(堆)算法。第一次接触heap这种数据结构是在大学的数据结构教材上,它是一棵完全二叉树。在STL中,heap是算法的形式提供给我们使用的。包括下面几个函数: make_heap: 根据指定的迭代器区间以及一个可选的比较函数,来创建一个heap. O(N) push_heap: 把指定区间的最后一个元素插入到heap中. O(logN) pop_heap: 弹出heap顶元素, 将其放置于区间末尾. O(l原创 2021-03-22 20:21:43 · 82 阅读 · 0 评论 -
124. 二叉树中的最大路径和 树形dp,最大深度
思路 c++,动态规划,递归。 树形dp。 官方题解: 作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/solution/er-cha-shu-zhong-de-zui-da-lu-jing-he-by-leetcode-/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先,考虑实现一个简化的函数 maxGain(node),该原创 2021-03-19 19:00:56 · 124 阅读 · 0 评论 -
1021 Deepest Root (25 分) dfs, 好题,树形dp,求树的深度
解体思路 寻找到所有的叶子节点,进行dfs,记录深度,最后输出即可。、 又犯了zz错误,自罚三杯。 代码 #include<cstdio> #include<iostream> #include<algorithm> #include<vector> using namespace std; int n; struct Node{ int v; Node(int v_=0):v(v_){} }; vector<vector<N原创 2021-03-19 18:59:30 · 79 阅读 · 0 评论 -
589. N 叉树的前序遍历 栈模拟前序遍历树
589. N 叉树的前序遍历 思路 栈的模拟,在下面的代码中写出了详细的注释。 代码 /* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) {原创 2021-03-15 23:04:31 · 106 阅读 · 0 评论 -
1021 Deepest Root (25 分) dfs,求树的深度
解体思路 寻找到所有的叶子节点,进行dfs,记录深度,最后输出即可。、 又犯了zz错误,自罚三杯。 代码 #include<cstdio> #include<iostream> #include<algorithm> #include<vector> using namespace std; int n; struct Node{ int v; Node(int v_=0):v(v_){} }; vector<vector<N原创 2021-03-05 22:20:22 · 62 阅读 · 0 评论 -
1020 Tree Traversals (25 分) 后序和中序构建树
思路 后序和中序构造二叉树 唯一一个注意的地方,在注释中。 CSDN真垃圾,c++没高亮,还要写成c #include<cstdio> #include<iostream> #include<algorithm> #include<string> #include<cstring> #include<queue> #include<vector> using namespace std; const int MAXN=原创 2021-03-05 21:34:32 · 61 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树
思路 呜呜呜笨蛋把前序遍历和层次遍历搞错了? 题目不难,细心即可。 根据前序遍历的第一个元素取中序遍历中找将树分成两个部分,不断的递归就好啦,详细的看代码。 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), rig原创 2021-02-21 16:46:56 · 58 阅读 · 0 评论 -
102. 二叉树的层序遍历
解题思路 层次遍历树,不难,有一些细节需要仔细的考虑。 c++如果构造函数中的所有参数都有默认值,那么不需要再添加无参构造函数 层次遍历的话设置一个队列依次压入队列不断的扩展节点就好了,值得注意的是不要把NULL压入队列。 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNo原创 2021-02-18 12:59:23 · 68 阅读 · 0 评论 -
TwoDimensionalRMQ
/** * Two Dimensional DMQ, Time Complexity O(n*m*logn*logm) * the index of array begins at 1 */ int val[310][310]; // store values int dp[310][310][9][9]; // store maxium value // dp[i][j][k]...原创 2020-04-04 23:20:14 · 96 阅读 · 0 评论 -
RMQ
RMQ 算法详解 RMQ 算法是用来求解区间最值的算法, 假设有一个 array a[MAXN]; 下标从 1 开始, 我们要查询 n 次, 每一次查询为区间[l, r]内的最值? 采用暴力的遍历算法, 时间复杂度为 O(m*(r-l+1)), m 为查询的次数 采用 RMQ 算法, 可以将时间复杂度降到 O(m+nlogn), 其为建立查询表的时间, 查询的时间为 O(1) 具体的解释详见本文...原创 2020-03-21 23:32:13 · 662 阅读 · 0 评论 -
PartitionTree(化分树)
划分树 有关于化分树比较详细的介绍 有关化分树, 这里先放出 kuangbin 的模板[^1], 随后给出详细的介绍. /* 划分树(查询区间第k 大) */ #pragma warning(disable : 4996) #include <algorithm> #include <cstdio> #include <cstring> #include ...原创 2020-03-18 22:58:00 · 875 阅读 · 0 评论