java实现二叉查找树

来源:互联网 发布:pe中如何查看mac地址 编辑:程序博客网 时间:2024/05/23 01:56
  1. /**
  2. * 二叉查找树:一列无序的int数组,通过二叉树查找方法创建我们需要的树,最后前序遍历得到有序的序列
  3. *
  4. * @author timmy1 实现步骤:第一个数字即为根节点:后面的元素通过比较数据的大小
  5. * 1.如果比当前节点数据域小,则查找该节点的左孩子,如果没有左孩子,则以该数据为节点创建左孩子。
  6. * 2.如果有左孩子,还需要进行比较,比节点数据域小,查找左孩子,比节点数据域大查找,查找右孩子,没有则创建,有的话进行比较
  7. */
  8. public class BinaryCheckTree {
  9. private TreeNode<Integer> root;
  10. private void createBinCheckTree(int i, int[] array) {
  11. if (i == array.length - 1)
  12. return;
  13. int data = array[i];
  14. TreeNode<Integer> newNode = new TreeNode<Integer>(data);
  15. TreeNode<Integer> node;
  16. if (root == null) {
  17. root = newNode;
  18. return;
  19. }
  20. node = root;
  21. // 节点与左右孩子的关系是左小右大
  22. while (node != null) {
  23. if (node.getData() > data) {// 数组元素比节点数据域小-》查找左节点
  24. if (node.leftChild != null) {
  25. node = node.leftChild;
  26. } else {
  27. node.leftChild = newNode;
  28. break;
  29. }
  30. } else {// 数组元素比节点数据域大-》查找右节点
  31. if (node.rightChild != null) {
  32. node = node.rightChild;
  33. } else {
  34. node.rightChild = newNode;
  35. break;
  36. }
  37. }
  38. }
  39. }
  40. public static void main(String[] args) {
  41. BinaryCheckTree tree = new BinaryCheckTree();
  42. int[] array = new int[] { 9, 23, 8, 10, 78, 13, 1, 5, 8, 32, 12 };
  43. for (int i = 0; i < array.length; i++) {
  44. tree.createBinCheckTree(i, array);
  45. }
  46. tree.printPreTra();
  47. }
  48. private void printPreTra() {
  49. TreeUtil.midTraversal(root);
  50. }
  51. }

结果打印:

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


0 0