题目如下:
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:
The left subtree of a node contains only nodes with keys less than the node's k...
分类:
其他好文 时间:
2015-07-12 15:49:25
阅读次数:
118
1、什么样的二叉树是二叉搜索树? 答:对于树中的结点X,它的左子树中的项均小于X中的项,它的右子树中的项均大于中的项。2、性质 性质1:二叉查找树的平均深度是O(logN); 性质2:从根节点一直往左走,直至无左路可走,既得最小元素; 性质3:从根节点一直往右走,直至无右路可走,既得最大元素...
分类:
其他好文 时间:
2015-07-12 15:36:44
阅读次数:
103
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.According to thedefinition of LCA on Wikipedia: ...
分类:
其他好文 时间:
2015-07-12 11:07:12
阅读次数:
170
本学习笔记部分内容来自网易云课堂浙江大学数据结构课程,谢谢!
1、散列表(哈希表)
已知的几种查找方法:
顺序查找 O(N)
二分查找(静态查找) O(logN)
二叉搜索树 O(h) h为二叉树高度 (动态查找:有插入有删除有查找)
平衡二叉树 O(logN)
查找的本质:已知对象找位置
1、有序安排对象:全序或半序;
2、直接算出对象位置...
分类:
其他好文 时间:
2015-07-11 18:40:07
阅读次数:
253
在二叉树中已经探讨过,如果按照随机顺序插入树节点,绝大多数都会出现不平衡的情况。最坏的情况,插入的数据时有序的,二叉树将会变成链表,插入、删除的效率将会严重地降低
下图就是按照数据升序的顺序插入二叉树的情况:
红黑树就是一种解决非平衡树的方法,它是增加了某些特点的二叉搜索树
为了能较快的时间来搜索一颗树,需要保证树总是平衡的(或者至少大部分是平衡的),就是说对树中的每个节点,它左...
分类:
其他好文 时间:
2015-07-10 11:32:41
阅读次数:
197
问题描述:
输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。
解析:
借助二叉树中序遍历,因为中序遍历二叉搜索树的特点就是从小到大访问结点。当遍历访问到根结点时,假设根结点的左侧已经处理好,只需将根结点与上次访问的最近结点(左子树中最大值结点)的指针连接好即可。进而更新当前链表的最后一个结点指针。
递归算法:
(1)中序遍历。
(2)原先指向左子结点的指针调整为链表中指向前一个结点的指针,原先指向右子结点...
分类:
其他好文 时间:
2015-07-10 11:26:22
阅读次数:
118
介绍: 使二叉树成为二叉查找树的性质是:对于树中的每一个节点X,它的左子树中全部keyword值小于X的keyword值。而它的右子树中全部keyword值大于X的keyword值。二叉查找树声明struct TreeNode;typedef struct TreeNode *Position...
分类:
其他好文 时间:
2015-07-10 10:57:45
阅读次数:
110
问题描述:
输入一个整数数组,判断该数组是不是某二叉查找树的后序遍历的结果。如果是返回true,否则返回false。
解析:
根据后序遍历的定义,如果一个序列是二叉树的后续遍历的结果,那么我们不难得出,序列的最后一个节点必定是二叉树的根节点,除了根节点外,序列中前一部分是二叉树的左子树的节点,后面一部分是二叉树的右子树的节点。同理,左右子树的遍历结果也具有一样的特点。...
分类:
其他好文 时间:
2015-07-10 00:29:54
阅读次数:
107
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点的方向。如下图所示:二叉树的结点定义如下:1 struct BinaryTreeNode2 {3 int m_nValue;4 BinaryTreeNode* m_pLeft;...
分类:
其他好文 时间:
2015-07-09 17:37:54
阅读次数:
99
#include
using namespace std;
typedef struct BiTNode{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
class solution{
public:
bool searchBst(BiTree root, int key, BiTree f, BiTree ...
分类:
编程语言 时间:
2015-07-09 13:15:23
阅读次数:
104