zoukankan      html  css  js  c++  java
  • Java-二叉树算法

    二叉树算法的排序规则: 

     1、选择第一个元素作为根节点 

     2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树

     3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)

    二叉树算法的核心类,此类只提供了添加和打印输出的方法

    package com.lym.binaryTree;
    
    /**
     * 二叉树算法的排序规则: 
     * 1、选择第一个元素作为根节点 
     * 2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
     * 3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
     * 
     * @author Administrator
     * 
     */
    public class BinaryTree {
    
    	private Node root;// 根节点
    
    	// 添加节点,提供外部访问
    	public void add(int data) {
    		if (root == null) {
    			root = new Node(data);
    		} else {
    			root.addNode(data);
    		}
    	}
    
    	// 输出节点,提供外部访问
    	public void print() {
    		if (root != null) {
    			root.printNode();
    		}
    	}
    
    	// 树枝节点
    	class Node {
    		private Node leftNode;
    		private Node rightNode;
    		private int data;
    
    		public Node(int data) {
    			this.data = data;
    		}
    
    		// 添加节点
    		public void addNode(int data) {
    			if (this.data > data) {// 添加在左面
    				if (this.leftNode == null) {
    					this.leftNode = new Node(data);
    				} else {
    					this.leftNode.addNode(data);
    				}
    			} else if (this.data <= data) {
    				if (this.rightNode == null) {
    					this.rightNode = new Node(data);
    				} else {
    					this.rightNode.addNode(data);
    				}
    			}
    		}
    
    		// 输出所有节点
    		//中序遍历
    		public void printNode() {
    			if (this.leftNode != null) {
    				this.leftNode.printNode();
    			}
    			System.out.print(this.data + " ");//输出语句放最后就是后续遍历
    			if (this.rightNode != null) {
    				this.rightNode.printNode();
    			}
    		}
    	}
    }
    

    二叉树的测试类

    package com.lym.binaryTree;
    /**
     * 二叉树测试类
     * 
     * @author Administrator
     *
     */
    public class BinaryTreeDemo {
    
    	public static void main(String[] args) {
    		BinaryTree bt = new BinaryTree();
    		bt.add(3);
    		bt.add(5);
    		bt.add(2);
    		bt.add(1);
    		bt.add(4);
    		bt.add(8);
    		bt.add(10);
    		bt.add(13);
    		bt.add(6);
    		bt.add(9);
    		
    		bt.print();
    	}
    
    }
    


  • 相关阅读:
    OpenERP 7.0 中文报表PDF乱码(WindowsXP)
    【转】CentOS 6.3 X64自动安装OpenERP 7.0脚本
    OE7设置菜单为什么这么少?
    PostgreSQL的备份和恢复
    PyPI镜像网站
    【转】Win 7 下源码运行OpenERP7.0
    OpenERP中的会计凭证
    OpenERP实施记录(14):收款处理
    OpenERP实施记录(13):出库处理
    intro.js 页面引导简单用法
  • 原文地址:https://www.cnblogs.com/liuyanmin/p/5146533.html
Copyright © 2011-2022 走看看