<pre name="code" class="java">
<span style="white-space:pre"> </span>//内部节点类
public class Node{
public int data;//传的数据
public Node left;//左节点
public Node right;//右节点
public Node(){
}
public Node(int data){
this.data = data;
}
//添加节点
public void addNode(Node newNode){
//新加的数据小于本来数据,放左边否,则放右边
if(newNode.data < this.data){
//如果找到左节点,接着对比,没有就将值放到左节点上
if(this.left == null){
this.left = newNode;
}else{
//递归查询
this.left.addNode(newNode);
}
}else{
if(this.right == null){
this.right = newNode;
}else{
this.right.addNode(newNode);
}
}
}
//打印节点
public void printNode(){
//如果左节点不为空,那么接着查询左节点,知道为空(递归)
if(this.left != null){
this.left.printNode();
}
//打印查询到的所有节点值
System.out.println(this.data);
if(this.right != null){
this.right.printNode();
}
}
}
/**
* 将Node排序方法封装
* @author tiger
*
*/
public class BinaryTree {
private Node root;
public void sort(int[] arr){
for (int i = 0; i < arr.length; i++) {
Node newNode = new Node(arr[i]);
if(root == null){
root = newNode;
}else{
root.addNode(newNode);
}
}
}
public void print(){
if(root != null){
root.printNode();
}
}
}
//测试类
public class BinaryTreeSort {
public static void main(String[] args) {
int[] n = {5,7,1,3,0};
BinaryTree bt = new BinaryTree();
bt.sort(n);
bt.print();
}
}