通过前面的学习,我们知道,有序数组可以利用二分查找法快速的查找特定的值,时间复杂度为O(log2N),但是插入数据时很慢,时间复杂度为O(N);链表的插入和删除速度都很快,时间复杂度为O(1),但是查找特定值很慢,时间复杂度为O(N)。
那么,有没有一种数据结构既能像有序数组那样快速的查找数据,又能像链表那样快速的插入数据呢?树就能满足这种要求。不过依然是以算法的复杂度为代价
在编程的世界里,...
分类:
其他好文 时间:
2014-12-22 09:28:38
阅读次数:
203
说起二叉树的遍历方式,这里可以分为两类 一、深度(也就是从上往下)
先序遍历
中序编列
后序遍历
二、广度(也就是从左往右)
层序遍历
下面是深度的三种遍历方式:
#include
using namespace std;
typedef struct BitNode{
char data;
struct BitNode *lchild, *rchild;
}Bi...
分类:
其他好文 时间:
2014-12-09 17:42:11
阅读次数:
191
1、二叉树的定义
二叉树(Binary Tree)是一种特殊的树型结构,每个节点至多有两棵子树,且二叉树的子树有左右之分,次序不能颠倒。
由定义可知,二叉树中不存在度(结点拥有的子树数目)大于2的节点。二叉树形状如下下图所示:
2、二叉树的性质
(1)在二叉树中的第i层上至多有2^(i-1)个结点(i>=1)。备注:^表示此方
(2)深度为k的二叉树至多有2^...
分类:
编程语言 时间:
2014-11-26 11:32:59
阅读次数:
342
树结构练习——判断给定森林中有多少棵树Time Limit: 1000MS Memory limit: 65536K题目描述众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的功能,还 因为它是很多其他面向对象语言的祖先和典范。不过这世上几乎没什么东西是完美的,C++也不例外,多继...
分类:
其他好文 时间:
2014-11-25 14:14:01
阅读次数:
154
树结构练习——排序二叉树的中序遍历Time Limit: 1000MS Memory limit: 65536K题目描述在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3)....
分类:
编程语言 时间:
2014-11-25 10:39:55
阅读次数:
245
二叉排序树Time Limit: 1000MS Memory limit: 65536K题目描述二叉排序树的定义是:或者是一棵空树,或者是 具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、...
分类:
编程语言 时间:
2014-11-25 10:30:35
阅读次数:
124
数据结构实验之求二叉树后序遍历和层次遍历Time Limit: 1000MS Memory limit: 65536K题目描述已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。输入输入数据有多组,第一行是一个整数t (t#include #include #include #include #...
分类:
其他好文 时间:
2014-11-24 22:22:36
阅读次数:
411
数据结构之链表数据结构之栈和队列数据结构之二叉树数据结构之排序数据结构之递归
分类:
其他好文 时间:
2014-11-16 21:17:44
阅读次数:
165
用一种自己理解的方式去做,就会发现其实不难。最近好几个人问过这个问题,总是做着做着就把自己绕进去了。其实这里只要知道三种遍历的规则,理清思路,就没问题啦!
这只是个人理解,有更好理解的欢迎交流学习!...
分类:
其他好文 时间:
2014-10-09 22:47:37
阅读次数:
129