接着上一次对非线性逻辑数据结构树的内容,开启对二叉树的深入复习和总结。首先还是先回顾一下几个重要的概念:
一、回顾
1. 满二叉树与完全二叉树
满二叉树指的是除了叶子节点外所有的节点都有两个子节点。这样可以很容易的计算出满二叉树的深度,要掌握满二叉树的一些性质。
完全二叉树则是从满二叉树继承而来,指的所有的节点按照从上到下,从左到右的层次顺序依次排列所构成的二叉树称之为完全二叉树。所以可以...
分类:
其他好文 时间:
2015-08-02 23:29:41
阅读次数:
205
原文戳这与以往的并查集不同,这次需要一个删除操作。如果是叶子节点还好,直接修改父亲指针就好。但是如果要是移动根节点,指向它的所有子节点也会跟着变化。所以要增加一个永远不会被修改的虚拟根节点,这样就可以把一个点从集合中删除而不影响其它的点了。 1 #include 2 #include 3 #in.....
分类:
其他好文 时间:
2015-08-02 23:08:08
阅读次数:
194
简要代码
/*
* File : print binary tree road between leaf A and leaf B
* Date : 2015/8/2
* Author : jinya
* Assert A --> B
* traverse root , left , right ; left , root , right ; left , right , root...
分类:
其他好文 时间:
2015-08-02 16:54:43
阅读次数:
138
给出一个高为h,宽为w的广告板,有n张广告需要贴,从第一行开始贴,尽量靠左,输出每个广告最后贴在哪一行的先一直想不通这样建树是为什么后来看到一篇题解里面的一句话“直到找到一个满足条件的叶子节点”所以用min(h,n)建树,最后输出的为哪一行,即为一个单点(线段树的最末一层)大概像这样然后就是更新值,...
分类:
其他好文 时间:
2015-07-31 23:17:01
阅读次数:
164
题意:给一个图,想让每两条路都有两条边相,不过特殊的是相同的边多次相连也被认为是一条边,现在求最少还需要添加几条边才能做到分析:手欠没看清楚是相同的边不能相连,需要去重边,缩点后求出来叶子节点的数目即可。************************************************...
分类:
其他好文 时间:
2015-07-31 19:56:14
阅读次数:
127
Repository是存放process配置等元数据的地方,按惯例,先上UML图:图1:Repository UML图 Entry:表示存储库中的一条记录,既可以是一个目录,也可以是一条数据项(叶子节点) Folder:包含sub-entries的entry Repository:包含Entr...
删除一个节点同样有可能改变树的平衡性,而且,删除所造成的不平衡性比插入所造成的平衡性的修正更加复杂。
化繁为简是算法分析中一个常用的方法。下面我们将欲删除节点分为三大类:欲删除节点为叶子节点、欲删除节点只有一个子节点和欲删除有两个子节点。
而欲删除节点有两种可能的颜色,也需要分别对待。
为简化讨论,我们以欲删除节点在左侧的情况为例进行修正,如果欲删除节点在右侧,进行镜像地修正操作即可。...
分类:
其他好文 时间:
2015-07-31 09:04:59
阅读次数:
100
题意:给你一些圆圈的圆心坐标和半径,保证这些圆圈是包含或者相离的。现在两个人做博弈操作,拿掉一个那么这个所包含的都要移除掉。两个人一直拿下去,直到某个人找不到一个可以移除的圈他就输了。思路学习的姿势。这是一个树上删边游戏模型;
首先按照半径升序排序,然后对于每一个圆找第一个包含它的圆,然后连一条边。建树完成。
叶子节点的SG值为0;
中间节点的 SG 值为它的所有子节点的 SG 值加 1 后的...
分类:
其他好文 时间:
2015-07-29 19:16:27
阅读次数:
101
索引常用的数据结构为B+树。结构如下如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。真实的数据存在于叶子节点即3、5、9、10、13、1...
分类:
数据库 时间:
2015-07-29 17:22:10
阅读次数:
211
测试环境:windows 7 vs2010
主要实现二叉树的初始化递归和非递归遍历,层次遍历,获取叶子节点的个数,获取树的高度以及镜像树,部分代码也参考了互联网上的相关资料。
源程序:
BinaryTreeNode.h
#ifndef _BINARY_NODE
#define _BINARY_NODE
#include
using namespace std;
template
st...
分类:
编程语言 时间:
2015-07-28 21:11:12
阅读次数:
130