二叉树总结(五)伸展树、B-树和B+树
摘要:一、伸展树 伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。 因为,它是一颗二叉排序树,所以,它拥有二叉查找树的性质;除此之外,伸展树还具有的一个特点是:当某个节点被访问时,伸展树会通过旋转使该节点成为树根。这样做的好处是,下次要访问该节点时,能够迅
阅读全文
二叉树总结(四)平衡二叉树
摘要:平衡二叉树概念 AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于"二叉查找树",它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 AVL树的查找、插入和删除在平均和最坏情况下都是O(l
阅读全文
二叉树总结(一)概念和性质
摘要:一、树的概念 树是一些点的集合,这个集合可以为空,若不为空,则它是由一个根节点和0个或多个为空的子树组成,且每个子树都被一条来自根节点的有向边相连。 树叶:没有儿子的节点;兄弟:具有相同父亲的节点;类似还有祖父和孙子节点。 路径:节点n1,n2,n3,...,nk的一个序列,使得对于1 <= i <
阅读全文
[LeetCode]Range Sum Query
摘要:题目:Range Sum Query - Immutable Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. Example: Note: 给定
阅读全文
[LeetCode]Evaluate Reverse Polish Notation
摘要:题目:Evaluate Reverse Polish Notation 给出一个加减乘除的逆波兰式,求出它的结果; 什么是逆波兰式? 简单来说,逆波兰式就是表达式的后缀表示形式; 例如下面两个式子: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["
阅读全文
二叉树总结(二)树的遍历
摘要:该文我会用来总结二叉树相关的知识 二叉树如下图: 二叉树的结构 二叉树构造方法 为了测试二叉树的的各种算法,我不得不写一个二叉树的构造方法,我主要是用层次遍历的方式来构造二叉树的。层次遍历在后面会详细说到。 用字符串的方式来输入二叉树的序列,例如: 输入:1 2 3 4 5 6 7 null nul
阅读全文
[LeetCode]Unique Binary Search Trees
摘要:题目:Unique Binary Search Trees 找值为1->n的所有可能的二叉树。 如果是找可能的数量而不需要列出所有可能时,可以用动态规划。 思路如下: 动态规划法:f(n)表示该子树中有n个数字可用来组成树枝f(0) = 1;空树f(1) = 1;树根f(2) = f(0)*f(1)
阅读全文