您的位置:首页 > 其它

二叉查找树的遍历【先序(前序),中序,后序】

2015-08-07 17:25 387 查看
1.驱动类(含主函数)

public class DriveClass {

public static void main(String[] args) {

Ergodic<Integer> tree=new Ergodic<Integer>();

tree.insert(10);

tree.insert(7);

tree.insert(6);

tree.insert(18);

System.out.println("下面是先序遍历:");

tree.DLR();

System.out.println("\n下面是中序遍历:");

tree.LDR();

System.out.println("\n下面是后序遍历:");

tree.LRD();

}

}



2.二叉树类

public class Ergodic<AnyType extends Comparable<AnyType>> {

//创建节点类


private static class Node<AnyType>{

private AnyType data;//数据

private int rate;//出现的次数

private Node<AnyType> leftNode;//左子树

private Node<AnyType> rightNode;//右子树

public Node(AnyType data){

this.data=data;

this.rate=1;

this.leftNode=null;

this.rightNode=null;

}

}

private Node<AnyType> root;

public Ergodic(){

root=null;

}

public boolean isEmpty(){

return root==null;

}

public void makeEmpty(){

root=null;

root.rightNode=null;

root.leftNode=null;

}

//插入

public void insert(AnyType data){

root=insert(data,root);

}

private Node<AnyType> insert(AnyType data, Node<AnyType> node) {

if(node==null){

return new Node<AnyType>(data);

}

int compareConsult=data.compareTo(node.data);

if(compareConsult<0){

node.leftNode=insert(data,node.leftNode);

}

else if(compareConsult>0){

node.rightNode=insert(data,node.rightNode);

}

else{

node.rate=node.rate+1;

}

return node;

}

//先序遍历

public void DLR(){

DLR(root);

}

//中序遍历

public void LDR(){

LDR(root);

}


//后序遍历

public void LRD(){

LRD(root);

}

private void LDR(Node<AnyType> node) {

if(node.leftNode!=null){

LDR(node.leftNode);

}

printNode(node.data);

if(node.rightNode!=null){

LDR(node.rightNode);

}

}

private void LRD(Node<AnyType> node) {

if(node.leftNode!=null){

LRD(node.leftNode);

}

if(node.rightNode!=null){

LRD(node.rightNode);

}

printNode(node.data);

}

private void DLR(Node<AnyType> node){

printNode(node.data);

if(node.leftNode!=null){

LRD(node.leftNode);

}

if(node.rightNode!=null){

LRD(node.rightNode);

}

}

private void printNode(AnyType data){

System.out.print(data+" ");

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: