数据结构
文章平均质量分 57
DJ丶丶
https://github.com/pengjiawei
展开
-
平衡二叉树的LR旋转的两种情况
关于平衡二叉树的旋转很多文章都有介绍,我最近也在复习,所以看了很多。但是我在自己写的过程中发现了这个值得注意的点对于LR旋转,我理解的方法就是,先左旋再右旋 但是以上两种情况值得注意的地方就是,不平衡的最后的叶子结点是父节点的左子树还是右子树...原创 2018-03-28 08:49:07 · 3441 阅读 · 0 评论 -
递归创建二叉树的指针传递和退出条件
一想到二叉树的创建,很自然的我们会写出这样的代码int create_tree(binary_node** b){ char c; scanf("%c",&c); if (c == '#'){ *b = NULL; }else{ //这里注意,如果传入进来的只是*b 那么走到这里重新分配内存空间之后就不是在操作实参了。...原创 2018-04-18 12:25:41 · 1053 阅读 · 0 评论 -
c++和数据结构基础
记录平时不怎么注意的基础概念,陆陆续续会记笔记1.堆和树 如果一棵二叉树的每一个节点都带着一个值,且父亲的值总是比儿子的值要大,我们称这棵树为大顶二叉堆,如果是父亲比儿子都要小,那就是小顶二叉堆,统称为二叉堆。(其实一般都把二叉两个字省略掉,毕竟通常说的堆都是二叉堆,然而堆不止二叉堆)。这一个良好的性质注定了堆可以用来当作优先队列使用。堆是特殊的树,注意与二叉排序树(左子树的节点值一...原创 2018-04-24 14:45:06 · 1210 阅读 · 0 评论 -
右值引用和移动语义
什么是右值什么是左值,已经很多类似的文章介绍了。我这里直接说重点,为什么我们需要转移语义class Foo{public: Foo():a(0){ } Foo(int a_):a(a_){ printf("constructor\n"); } Foo(const Foo& rhs){ printf("con...原创 2018-05-14 16:13:17 · 189 阅读 · 0 评论 -
最小生成树和最短路径
这篇算作是《算法》第四版部分读后感吧我思考这个问题的开始就是纠结最小生成树prim算法和最短路径dijkstra算法的异同1.最小生成树prim算法 直接从例子开始吧,我们考虑一副这样的图 1.将D设为起始点(设置某个点为起始点是随机的),考虑与它相邻节点的权重值,图中黄色节点,也就是D-A,D-B,D-E,D-F 2.选取权重值最小的D-A将其连接,图中蓝色的代表已经加入到...原创 2018-06-23 09:59:04 · 2334 阅读 · 0 评论