数据结构与算法学习
唐唐唐唐人
IT界冉冉升起的一只小菜鸟,请各位大牛们多多指教~~
展开
-
八叉树Octree
八叉树维基释义:八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中心。百度百科释义:八叉树(Octree)的定义是:若不为空树的话,树中任一节点的子节点恰好只会有八个,或零个,也就是子节点不会有0与8以外的数目。那么,这要用来做什么?想象一个立方转载 2017-04-08 20:11:57 · 1135 阅读 · 0 评论 -
常见的动态规划问题分析与求解
动态规划(Dynamic Programming,简称DP),虽然抽象后进行求解的思路并不复杂,但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一,并不像回溯法具有解决绝大多数问题的银弹(全面解析回溯法:算法框架与问题求解)。为了解决动态规划问题,只能靠多练习、多思考了。本文主要是对一些常见的动态规划题目的收集,希望能有所帮助。难度评级受个人主观影响较大,仅供参考。转载 2017-03-27 00:01:19 · 622 阅读 · 0 评论 -
全面解析回溯法:算法框架与问题求解
摘了一段来自百度百科对回溯法思想的描述:在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。 若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。转载 2017-03-27 00:05:31 · 989 阅读 · 0 评论 -
二叉树的非递归遍历整理
整理一下二叉树的非递归遍历写法,什么时候忘了可以再看一下:#include<iostream>#include <vector>#include <stack>#include <unordered_map>using namespace std;struct TreeNode { int val; TreeNode *left, *right; TreeNode(i原创 2017-08-05 17:56:43 · 216 阅读 · 0 评论 -
单链表的快排
记录一下单链表快排的写法,直接上代码:#include<iostream>#include <ctime>using namespace std;struct Node { int val; Node* next; Node(int v) : val(v), next(nullptr) {}};void NodeSwap(Node* a, Node* b) {原创 2017-08-05 23:23:56 · 201 阅读 · 0 评论