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

}
时间: 2024-11-10 07:09:30

Java-二叉树算法的相关文章

二叉树算法

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>二叉树算法</title> <script type="text/javascript"> window.onload = function () { function Node(data, le

代写程序|java二叉树字典查询(qq 928900200)

This assignment will help you practice and understand better the Binary Tree and Binary Search Tree data structures, their operations and implementations. You are to design a small dictionary using the Binary Search Tree data structure. Each entry ma

Java Sort算法

//插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil; /** * @author treeroot * @since 2006-2-2 * @version 1.0 */ public class InsertSort implements SortUtil.Sort{ /** (non-Javadoc) * @see org.rut.util.algorithm.SortU

java二叉树

网上有关于二叉数的java实现http://blog.csdn.net/skylinesky/article/details/6611442 多数案例都没有键值,有键值的也全是整型.我用java实现了一个可以任何对象为键的二叉数 package Tree; import java.io.IOException; public class Tree<I extends Comparable<I> ,V> { @SuppressWarnings("rawtypes"

java回收算法

两个最基本的java回收算法:复制算法和标记清理算法 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B.此为新生代最常用的算法 标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象 两个概念:新生代和年老代 新生代:初始对象,生命周期短的 永久代:长时间存在的对象 整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收. P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法

java排序算法之希尔排序

希尔排序是冲破二次时间屏障的第一批算法之一. 它是通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到最后一趟(比较相邻元素)为止.因此希尔排序也叫缩减增量排序. 希尔排序使用一个序列h1,h2,h3...hk来排序. 具体的意思是 第一趟排序比较的是相隔为hk的元素,也就是比较a[i]与a[i+hk],保证a[i]<=a[i+hk]. 第二次比较的是相隔为hk-1的元素,也就是比较a[i]与a[i+hk-1],保证a[i]<=a[i+hk-1]. 直到最后比较的是相

Java排序算法(一)

Java排序算法(一) 一.排序的基本概念和分类 1.1排序的定义 在<大话数据结构>中,排序定义为,假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字{k1,k2,...,kn},需确定1,2...n的一种排列p1,p2...pn,是其相应的关键字满足Kp1<=Kp2<=...<=Kpn(非递减或非递增)关键,即使得序列称为一个按关键字有序的序列{rp1,rp2...rp3},这样的操作称为排序. 1.2排序的稳定性 假设ki=kj(1<=i<

使用Java练习算法常用的基本操作

一.使用Java练习算法常常需要使用控制台的数据输入和输出,下面记录一下基本的使用方法: 基本用法 1 import java.util.*; 2 public class Main { 3 public static void main(String[] args){ 4 Scanner cin = new Scanner(System.in); //常用Scanner类来获取数据 5 int a = cin.nextInt(); //将输入的数据转换成int型赋给a,输入数据以空格或Tab分

Java经典算法案例

笔试中的编程题3 JAVA经典算法40例[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}pu

JAVA计算器算法实现

import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class BorderJFrame extends JFr