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();
    	}
    
    }
    


  • 相关阅读:
    ZOJ 3954 Seven-Segment Display
    ZOJ 3955 Saddle Point
    ZOJ 3950 How Many Nines
    ZOJ 3957 Knuth-Morris-Pratt Algorithm
    PAT L2-018. 多项式A除以B
    hihocoder 1500 EL SUENO
    hihocoder 1498 Diligent Robots
    hihocoder 1497 Queen Attack
    hihocoder 1490 Tree Restoration
    SCU 4443 Range Query
  • 原文地址:https://www.cnblogs.com/liuyanmin/p/5146533.html
Copyright © 2011-2022 走看看