1. 问题描述 计算完全二叉树的节点数。对于完全二叉树的定义可参考wikipedia上面的内容。2. 方法与思路 最简单也最容易想到的方法就是使用递归,分别递归计算左右子树的节点数的和。但此方法最容易超时,一般不可取。
int countNodes(TreeNode* root) {
if(root == NULL) return 0;
else if(ro...
分类:
其他好文 时间:
2015-06-22 16:31:48
阅读次数:
417
对于二叉树,有前序、中序、后序三种遍历方法,由于树的定义本身就是递归定义的,故采用递归方法实现三种遍历简洁易懂。若采用非递归访问,则需要使用栈来模拟递归的实现。三种遍历的非递归算法中,前序和后序较容易,而后序相对较难。前序遍历递归非递归树的遍历中序遍历递归非递归后序遍历递归非递归层次遍历计算树高.....
分类:
其他好文 时间:
2015-06-18 19:01:43
阅读次数:
117
在WikiPedia中,对二叉查找树的定义如下:
二叉查找树,是一种基于节点的二叉树,有下面的性质:
节点的左子树中任意节点值小于根节点;
节点的右子树中任意节点值大于根节点;
左右子树都必须是二叉查找树,不允许存在重复节点。
二叉查找树的上述性质,保证了各节点值的顺序,这样进行查找,求最大值最小值时,会效率更高。如果没有这种顺序,则可能需要树中的将每个节点与指定的查找值进行比较。...
分类:
其他好文 时间:
2015-06-15 23:57:34
阅读次数:
180
SAM好题,显然我们不能与每个后缀都去算LCP考虑对询问串每一位算贡献,先构建出逆序构建自动机,这样我们得到了原串的后缀树(parent树)根据parent树的定义,一个节点对应字符串出现的位置对应该节点的right集合也就是子树right集合的并,且出现一定是某个后缀的某个前缀某些节点代表了一个后...
分类:
其他好文 时间:
2015-06-05 00:34:52
阅读次数:
283
树的定义树,由边连接的一些列节点。树是一种非线性的数据结构。根节点,树上最高的节点。父节点,某个节点的上层节点。子节点,某个节点的下层节点。叶子,没有任何子节点。二叉树二叉树,子节点的数量不超过两个的树。父节点的两个节点分别称为左节点和右节点。二叉查找树,..
分类:
编程语言 时间:
2015-06-04 17:23:10
阅读次数:
157
一、基本概念 AVL树既是平衡二叉树。AVL树的定义首先要求该树是二叉查找树(满足排序规则),并在此基础上增加了每个节点的平衡因子的定义,一个节点的平衡因子是该节点的左子树树高减去右子树树高的值。 ===================================================...
分类:
其他好文 时间:
2015-06-03 23:05:21
阅读次数:
200
一般二叉树的查找是通过遍历整棵二叉树实现,效率较低。二叉查找树是一种特殊的二叉树,可以提高查找的效率。二叉查找树又称为二叉排序树或二叉搜索树。 二叉查找树的定义 二叉排序树(Binary Search Tree)又称二叉排序树(Binary Sort Tree),或者是一颗空二叉树,或者...
分类:
编程语言 时间:
2015-05-28 23:09:56
阅读次数:
204
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于...
分类:
其他好文 时间:
2015-05-26 14:15:31
阅读次数:
191
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运...
分类:
其他好文 时间:
2015-05-24 23:21:28
阅读次数:
234
对于创建一棵二叉树,首先想到的方法是使用递归思想进行。这里,采用先序递归创建二叉树。首先介绍下自己写的二叉树的定义:1 typedef int TElementType;2 3 typedef struct BiTNode4 {5 TElementType data;6 BiTNod...
分类:
其他好文 时间:
2015-05-15 13:35:05
阅读次数:
127