代码改变世界

随笔档案-2012年10月9日

二叉排序树(二叉搜索树)

2012-10-09 11:17 by jiutianhe, 529 阅读, 收藏,
摘要: 二叉排序树二叉排序树又称为二叉查找树,它是一种特殊结构的二叉树,其定义为:二叉树排序树或者是一棵空树,或者是具有如下性质的二叉树:(1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值;(2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值;(3)它的左右子树也分别为二叉排序树。这是一个递归定义。由定义可以得出二叉排序树的一个重要性质:中序遍历一个二叉排序树时可以得到一个递增有序序列。图1所示的二叉树就是一棵二叉排序树,若中序遍历图8.3(a)的二叉排序树,则可得到一个递增有序序列为:1,2,3,4,5,6,7,8,9。 (a) 二叉排序树示例1(b) 二叉排序树示例2(根据字 阅读全文

哈夫曼树

2012-10-09 10:55 by jiutianhe, 241 阅读, 收藏,
摘要: 哈夫曼树又称最优二叉树哈夫曼树的构造哈夫曼树的构造 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和; (3)从森林中删除选取的两棵树,并将新树加入森林; (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。编程实现:package binarytree;import java.util.A... 阅读全文

二叉树的遍历(Java实现)

2012-10-09 10:42 by jiutianhe, 322 阅读, 收藏,
摘要: 主要是二叉树的遍历,包括递归遍历和非递归遍历package util; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.Queue; public class BinaryNode<T> { /** * 泛型BinaryNode类 */ public T item; public BinaryNode<T> left,right;//左右子树 public BinaryNode(T item) { this.item... 阅读全文