您的位置:首页 > 编程语言 > Java开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息