今天做了两个二叉树的题目, 挺简单的, 不用调试, 直接在提交框上敲完提交, 直接就通过了.
第一个题目是求二叉查找树的公共祖先, 因为是排序的, 所以很好做.
具体思路如下:
1 如果两个节点都比当前节点小, 那公共祖先必然是当前节点的左子树上, 所以递归左子树;
2 如果两个节点都比当前节点大, 那么同上, 递归右子树;
3 如果两个节点有一个为当前节点, 则当前节点为公共节点; 如...
分类:
其他好文 时间:
2015-08-07 00:21:15
阅读次数:
168
伸展树(Splay Tree)树平衡二叉查找树的一种,具有二叉查找树的所有性质。在性能上又比普通的二叉查找树有所改进:普通的二叉查找树在最坏情况下的查找操作的时间复杂度为O(n)(当二叉树退化成一条链的时候),而伸展树在任何情况下的平摊时间复杂度均为 O(log2n).特性和普通的二叉查找树相比,具...
分类:
其他好文 时间:
2015-08-06 00:09:06
阅读次数:
258
二叉查找树给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:节点的左子树中的值要严格小于该节点的值。
节点的右子树中的值要严格大于该节点的值。
左右子树也必须是二叉查找树。因为二叉查找树的中序遍历是有序的。所以验证是否为二叉查找树,用中序遍历这个二叉树,如果前一个结点的值大于当前结点的值,则证明这个不是二叉树。代码实现bool isValidBST(TreeNode *ro...
分类:
其他好文 时间:
2015-08-05 22:14:33
阅读次数:
115
树是一种非常重要的数据结构,而二叉树是树的最基本的形式。像其他高级的数据结构,如 二叉查找树、平衡二叉树、AVL树、红黑树、splay 树(伸展树)、笛卡尔树、Treap、SBT树等都是以二叉树作为基础。性质树中每个节点都有0-2个子节点,每个子节点又成为一棵子树的根树中边的数目是节点的数目 - 1...
分类:
其他好文 时间:
2015-08-05 00:31:47
阅读次数:
192
红黑树目的在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。效率查找,插入和 删除 时间复杂度:O(log n) ,n 是树中元素数目。性质
节点是红色或黑色。
根节点是黑色。
每个叶节点(NIL节点,空节点)是黑色的。
每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。...
分类:
其他好文 时间:
2015-07-30 21:33:43
阅读次数:
110
定义字典树,又称单词查找树,Trie树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串,所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度的减少无谓的字符串比较,查询效率比哈希表高。解释
这个图片比较经典
就是在每一次边存的是字符,点标记着个点是否之前的边的字符都存在
如图存在的字符串有 abc abcd abd。。。。代码#inclu...
分类:
其他好文 时间:
2015-07-29 21:29:35
阅读次数:
135
二叉查找树:是一棵二叉树,其中每个结点都含有一个键以及相关联的一个值且每个结点的键都大于其左子树中的任意结点的键而小于其右子树中的任意结点的键。
二叉查找树的每个方法功能原理都在代码中有详细的解释,下面来看代码:
/**
*
* @author seabear
* 二叉查找树
* @param
* @param
*/
public class BTS,Value> {
...
分类:
编程语言 时间:
2015-07-29 15:59:40
阅读次数:
237
Recover Binary Search Tree这道题要修正二叉查找树错误节点,不改变结构。
并且时间复杂度药O(n),空间复杂度药O(1).思路:Here’s an example:
1
/ 2 3
/
4
5
The above binary tree is serialized as “{1,2,3,#,#,4,#,#,5}”....
分类:
其他好文 时间:
2015-07-29 14:14:33
阅读次数:
148
二叉查找树也叫二叉排序树。对于树中的每个节点X,它的所有左子树中项的值小于X节点中的项,所有右子树中的项的值大于X的项。需要实现的基本操作有:1.包含:判断某个元素是否包含在二叉查找树中,若存在则放回true,否则返回false。具体操作步骤如下:(1).从根结点开始进行判断,根结点为空则直接结束返回false;(2).如果相等则直接结束返回true;如果大于根结点的值,则继续与根结点的右子树进行比...
分类:
编程语言 时间:
2015-07-29 14:03:07
阅读次数:
265
1、二叉树:非线性数据结构,常被用于实现二叉查找树和二叉堆二叉树的第i层至多有2的i-1次方个结点;深度为k的二叉树至多有2^(k)-1个结点;对任何一棵二叉树T。满二叉树完全二叉树平衡二叉树2、二叉树的遍历:遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则..
分类:
其他好文 时间:
2015-07-28 14:53:11
阅读次数:
145