java实现二叉查找树
2016-11-24 09:30
113 查看
/**
* 二叉查找树:一列无序的int数组,通过二叉树查找方法创建我们需要的树,最后前序遍历得到有序的序列
*
*@author timmy1 实现步骤:第一个数字即为根节点:后面的元素通过比较数据的大小
* 1.如果比当前节点数据域小,则查找该节点的左孩子,如果没有左孩子,则以该数据为节点创建左孩子。
* 2.如果有左孩子,还需要进行比较,比节点数据域小,查找左孩子,比节点数据域大查找,查找右孩子,没有则创建,有的话进行比较
*/
public class BinaryCheckTree {
private TreeNode<Integer> root;
private void createBinCheckTree(int i, int[] array) {
if (i == array.length - 1)
return;
int data = array[i];
TreeNode<Integer> newNode = new TreeNode<Integer>(data);
TreeNode<Integer> node;
if (root == null) {
root = newNode;
return;
}
node = root;
// 节点与左右孩子的关系是左小右大
while (node != null) {
if (node.getData() > data) {// 数组元素比节点数据域小-》查找左节点
if (node.leftChild != null) {
node = node.leftChild;
} else {
node.leftChild = newNode;
break;
}
} else {// 数组元素比节点数据域大-》查找右节点
if (node.rightChild != null) {
node = node.rightChild;
} else {
node.rightChild = newNode;
break;
}
}
}
}
public static void main(String[] args) {
BinaryCheckTree tree = new BinaryCheckTree();
int[] array = new int[] { 9, 23, 8, 10, 78, 13, 1, 5, 8, 32, 12 };
for (int i = 0; i < array.length; i++) {
tree.createBinCheckTree(i, array);
}
tree.printPreTra();
}
private void printPreTra() {
TreeUtil.midTraversal(root);
}
}
结果打印:
pre Traversal:1
pre Traversal:5
pre Traversal:8
pre Traversal:8
pre Traversal:9
pre Traversal:10
pre Traversal:13
pre Traversal:23
pre Traversal:32
pre Traversal:78
相关文章推荐
- 二叉查找树的构造与遍历[Java实现]
- java实现二叉查找树
- (Java实现)二叉查找树--查找、删除、插入
- 用JAVA实现二叉查找树(二叉排序树)的打印
- 二叉查找树的Java实现
- JAVA二叉查找树实现
- java实现二叉查找树
- 线索化二叉查找树 java实现
- 将二叉查找树转换成双向链表 java实现
- AVL树-自平衡二叉查找树(Java实现)
- (数据结构与算法分析 五)------二叉查找树的实现( Java语言描述)
- 用java实现二叉查找树、堆和优先队列
- 算法导论15.5最优二叉查找树实现(Java语言)
- (Java实现)二叉查找树--查找、删除、插入
- 二叉查找树 Java实现
- java 实现的二叉查找树
- 二叉查找树的构造与遍历[Java实现]
- 二叉查找树--查找、删除、插入(Java实现)
- 二叉查找树(三)之 Java的实现
- 二叉查找树java实现