二叉查找树的遍历【先序(前序),中序,后序】
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+" ");
}
}
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+" ");
}
}
相关文章推荐
- 导出excel
- MongoDB Shell
- java equals()用法错误解析
- node msgpack5 数据传输 简单实现
- VS2008 fstream 编译出错的解决方法
- Rational Rose 2007(v7.0)下载地址、安装及激活详解教程
- IOS学习之委托和block
- poj2828(线段树)
- 使用jmx 监控zookeeper
- Java经典位运算实例
- Ambari Install Hadoop ecosystem for 9 steps
- SearchLookUpEdit 和 GridLookUpEdit
- RedHat 4下无resize2fs命令
- 自写网站阶段之:终结篇
- HDU 5363 Key Set(快速幂取模)
- Spring整合Quartz
- 亲历基本OSGI实例,进入另番思维领域(转)----包括打包发布为可执行文件
- JSONModel解析数据成Model
- cmake 命令行
- LWIP互联网资料汇总