java二叉排序树
Posted Eason-S
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java二叉排序树相关的知识,希望对你有一定的参考价值。
二叉排序树又称二叉查找树。它或者是一颗空树,或者是具有如下性质的二叉树:
1.如果左子树不空,那么左子树上的所有节点均小于它的根节点的值;
2.如果右子树不空,那么右子树上的所有节点均大于它的根节点的值;
3.左右字树也分别是二叉排序树。
关于二叉排序树的建立和遍历的代码实现如下:
1 class Node{ 2 public int data; 3 public Node left; 4 public Node right; 5 public Node(int data){ 6 this.data = data; 7 this.left = null; 8 this.right = null; 9 } 10 } 11 12 public class BinaryTree{ 13 14 private Node root; 15 public BinaryTree(){ 16 root = null; 17 } 18 19 //将date插入到排序二叉树中 20 public void insert(int data){ 21 Node newNode = new Node(data); 22 if(root == null) 23 root = newNode; 24 else{ 25 Node current = root; 26 Node parent; 27 while (true) { //寻找插入的位置 28 parent = current; 29 if(data<current.data){ 30 current = current.left; 31 if(current == null){ 32 parent.left = newNode; 33 return; 34 } 35 } 36 else{ 37 current = current.right; 38 if(current == null){ 39 parent.right = newNode; 40 return; 41 } 42 } 43 } 44 } 45 } 46 //输入数值,构建二叉树 47 public void buildTree(int[] data){ 48 for (int i=0; i<data.length; i++) { 49 insert(data[i]); 50 } 51 } 52 //中序遍历方法递归实现 53 public void inOrder(Node localRoot){ 54 if (localRoot !=null) { 55 inOrder(localRoot.left); 56 System.out.print(localRoot.data+" "); 57 inOrder(localRoot.right); 58 } 59 } 60 public void inOrder(){ 61 this.inOrder(this.root); 62 } 63 //先序遍历方法递归实现 64 public void preOrder(Node localRoot){ 65 if (localRoot !=null) { 66 System.out.print(localRoot.data+" "); 67 preOrder(localRoot.left); 68 preOrder(localRoot.right); 69 } 70 } 71 public void preOrder(){ 72 this.preOrder(this.root); 73 } 74 //后序遍历方法递归实现 75 public void postOrder(Node localRoot){ 76 if (localRoot !=null) { 77 postOrder(localRoot.left); 78 postOrder(localRoot.right); 79 System.out.print(localRoot.data+" "); 80 } 81 } 82 public void postOrder(){ 83 this.postOrder(this.root); 84 } 85 86 }
以上是关于java二叉排序树的主要内容,如果未能解决你的问题,请参考以下文章