java学习之二叉树的实现

二叉树是一种数据结构,每个节点都有两个子节点。

二叉树的遍历有三种方式,

先序遍历是 根节点,左子树,右子树;

中序遍历是 左子树,根节点,右子树;

后序遍历是 左子树,右子树,根节点;

java实现:

 1 package com.gh.Binary;
 2
 3 /**
 4  * 二叉树的实现
 5  *
 6  * @author ganhang
 7  *
 8  */
 9 public class BinaryTreeDemo {
10     public static void main(String[] args) {
11         BinaryTree bt = new BinaryTree();
12         bt.add(8);
13         bt.add(3);
14         bt.add(10);
15         bt.add(1);
16         bt.add(6);
17         bt.add(14);
18         bt.add(4);
19         bt.add(7);
20         bt.add(13);
21         bt.print();//中序遍历可以从小到大排序
22     }
23 }
package com.gh.Binary;
/**
 * 二叉树的管理类
 * @author ganhang
 *
 */
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 int data;
        private Node left;
        private Node right;
        public Node(int data) {
            this.data = data;
        }
        public void addNode(int data) {
            if (data < this.data) {
                if (this.left == null) {
                    this.left=new Node(data);
                } else {
                    this.left.addNode(data);
                }
            } else if (data >= this.data) {
                if (this.right == null) {
                    this.right=new Node(data);
                } else {
                    this.right.addNode(data);
                }
            }
        }
        //二叉树的中序遍历
        public void printNode() {
            if (this.left != null) {
                this.left.printNode();
            }
            System.out.println(this.data + " ");
            if (this.right != null) {
                this.right.printNode();
            }
        }
    }
}
时间: 2024-08-09 01:26:10

java学习之二叉树的实现的相关文章

java学习-排序二叉树

(排序)二叉树的创建及中序遍历 写起来比C复杂一点,思路大同小异~ 1 package Collection; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 /* 6 * (排序)二叉树的创建及中序遍历 7 */ 8 public class Node { 9 public Node LNode; 10 public Node RNode; 11 public Object value; // 结点的值 12 13 publ

Java学习-排序二叉树性能简单测试

1.创建4万个随机数,然后用分别用冒泡法,选择法,二叉树法3种排序算法进行排序,比较哪种更快 1 package Collection; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class sortSpeedTest { 7 8 public static void main(String[] args) { 9 int num = 40000; // 元素个数 10 int rnd1[] = new

java学习笔记13--比较器(Comparable、Comparator)

java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 之前Arrays类中存在sort()方法,此方法可以直接对对象数组进行排序. Comparable接口 可以直接使用java.util.Arrays类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口. Comparable接口的定义如下: public  int

Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31) Java 课堂 Java学习笔记(2015.7.27~7.31) 小技巧 常用方法 1.List另一个子类--LinkedList 2.数组的常用方法 3.排序 1.二分法查找 2.数组转换为List 3.可变参数Type ... param (了解) 1.容器Collection 2.自动拆装箱(了解) 3.JDK增强for循环(了解) 4.泛型(掌握) 5.iterator与for在迭代中的区别 1.概念:保存多个对象的对象. 2.JDk为什

【转载】JAVA学习路线二

JAVA学习路线二------------高阶面试 作者:Java高级进阶链接:https://zhuanlan.zhihu.com/p/35301291来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1.hashcode相等两个类一定相等吗?equals呢?相反呢? 2.介绍一下集合框架? 3.hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢? 4.hashmap和treemap什么区别?低层数据结

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入

Java学习第5天

---恢复内容开始--- 今天是2016年5月4号,今天是学习JAVA学习的第5天!今天的主要学习任务是对二维数组的学习. P96 3.7.5 二维数组 动态初始化 数据类型 数组名称 [][]=new 数据类型[行数][列数]   ; 如,int a[][]=new int[7][8]; 静态初始化 数据类型 数组名称 [][]=new 数据类型 [][]{ {值,值,...},{值,值,...},...}; 如,int a[][]=new int[][]{ {1,2,3},{54,6},{8

Java学习-008-判断文件类型实例

此文源码主要为应用 Java 如何判断文件类型的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-2 23:02:00,请知悉. Java 判断文件类型源码如下所示: 1 /** 2 * @function 判断文件类型 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java assertFileType

疯狂JAVA学习计划

? Java_StudyPlane ?2015/2/20 ????????大年初二 ????????雨天 1.5小时为1个课时. JAVA学习进度表