线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区...
分类:
其他好文 时间:
2015-04-03 18:45:36
阅读次数:
156
什么也不说了,直接上代码。首先是节点类,大家都懂得/** * 二叉树的节点类 * * @author HeYufan * * @param */class Node>{ /** * 节点储存的值 */ private T data; /** * 左子节点 */ private Node...
分类:
编程语言 时间:
2015-04-03 06:45:14
阅读次数:
207
判断是否为二叉搜索树
定义上下确界
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
*...
分类:
其他好文 时间:
2015-04-01 23:51:43
阅读次数:
130
搞了两天终于把中序遍历弄到类里面来了比在类外调用爽了一点。在n个节点的情况下,中序遍历多出一个if的时间复杂度为O(n)+O(1),最后还是O(n),哈哈。class BSTree{private: struct TreeNode { int key; ...
分类:
其他好文 时间:
2015-04-01 16:43:54
阅读次数:
128
Binary Tree Traversals
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3912 Accepted Submission(s): 1741
Problem Description
A b...
分类:
其他好文 时间:
2015-04-01 09:41:27
阅读次数:
209
一、题目 要求输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的节点,只能调整树中结点指针的指向。 二叉树结点定义如下:1 struct BinaryTreeNode2 {3 int m_nValue;4 BinaryTreeNode *m...
分类:
编程语言 时间:
2015-03-31 17:19:41
阅读次数:
167
在二叉搜索树中查找一个数,如果存在,则从树中删除。struct Node{ Node* left; Node* right; int data;};void findAndDel(Node*& head, int k){ if (!head) return; ...
分类:
其他好文 时间:
2015-03-30 01:31:36
阅读次数:
151
/*****************搜索二叉树*********************/
//《算法导论》P161
/*构建一个有n个不同关键字的二查搜索树的期望高度为h = O(lgn);
下述所有查找等操作的时间复杂度为O(h)
*/
/******定义搜索二叉树*****/
//对于任一节点x,满足其左子树上的节点key都不大于x.key
// ...
分类:
编程语言 时间:
2015-03-29 10:51:02
阅读次数:
137
1. 题目
输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。
二叉树结点的定义如下:
struct BinaryTreeNode
{
intm_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight...
分类:
其他好文 时间:
2015-03-21 21:22:44
阅读次数:
173