二叉树

二叉树概念

首先我们要明确,二叉树由各种节点组成;还有就是二叉树特点:(1)每个节点都可以有左子节点,右子节点(2)每一个节点都有一个

如图所示:

代码所示:

package cn.jse.node;

public class Node {

//左右节点、值

public Node leftNode;

public Node rightNode;

public Object value;

}

二叉树排序:插入数据与遍历

例子:

package cn.jse.node;

import java.util.ArrayList;

import java.util.List;

public class Node {

//左右节点、值

public Node leftNode;

public Node rightNode;

public Object value;

public void addData(Object v){

//如果当前节点没有值,就把数据放在当前节点上

if(null==value){

value=v;

}else{

//没有值就进行判断,新增的值与当前值的比较大小 大的右边,小的或者相等放左边

if((Integer)v-(Integer)value<=0){

if(null==leftNode){

leftNode = new Node();

}

leftNode.addData(v);

}else{

if(null == rightNode){

rightNode = new Node();

}

rightNode.addData(v);

}

}

}

//中序遍历所有的节点

public List<Object> values(){

List<Object> values = new ArrayList<>();

//左节点的遍历结果

if(null!=leftNode){

values.add(leftNode.values());

}

//当前节点

values.add(value);

//右节点的遍历结果

if(null!=rightNode){

values.add(rightNode.values());

}

return values;

}

public static void main(String[] args) {

//准备一个数组

int randoms[] =new int[]{55,6,13,45,16,23,28,9,50,36,18};

Node roots = new Node();

for(int num : randoms){

roots.addData(num);

}

System.out.println(roots.values());

}

}

控制台的输出结果:

[[6, [[9], 13, [[16, [[18], 23, [28, [36]]]], 45, [50]]]], 55]

不难发现,我们所给的数组就二叉树的形式进行排列了

其中遍历:二叉树的遍历分左序,中序,右序
左序即: 中间的数遍历后放在左边
中序即: 中间的数遍历后放在中间
右序即: 中间的数遍历后放在右边

  

如果你还在学习其他的算法可以设计一个例子可以比较性能:

题目:创建4万个随机数,然后用分别用冒泡法,选择法,二叉树3种排序算法进行排序,比较哪种更快

我可以先给你答案:二叉树最优  具体比较的代码请移步下一篇java——二叉树比较冒泡和选择排序

java中级——集合框架【2】-二叉树的更多相关文章

  1. java中级——集合框架【1】-ArrayList

    集合框架----ArrayList 引子:我们先来看看传统数组的用法 写一个Hero对象类 package cn.jse.t1; public class Hero { public String n ...

  2. java中级——集合框架【4】-Collections

    Collections 首先我们要知道Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 反转 reverse 使List中的数据发生发转 package cn.jse.c ...

  3. java中级——集合框架【3】-HashSet

    HashSet package cn.jse.hashset; import java.util.HashSet; public class TestCollection { public stati ...

  4. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  5. java.util 集合框架集合

    java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...

  6. Java基础——集合框架

    Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...

  7. java的集合框架之一

    java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...

  8. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

  9. java的集合框架set 和map的深入理解

    Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...

随机推荐

  1. Linux之定时任务crond

    定时任务说明与分类 定时任务的应用场景举例 每天晚上 12点备份/etc/目录 tar 定时任务的三种分类 crond(crontab)定时任务软件(软件包cronie),用的最多的一种 atd,应用 ...

  2. UVA1613-K-Graph Oddity(贪心)

    Problem UVA1613-K-Graph Oddity Accept: 108  Submit: 884Time Limit: 3000 mSec Problem Description Inp ...

  3. 如何征服面试官,拿到Offer [转]

    转自 https://my.oschina.net/cccyb/blog/3012768 又到了茶余饭后的时间,想想写点什么,掐指一算,噢呦,快到3月份了,职场的金三银四跳槽季又来了,不同的是今年比往 ...

  4. forall 与 for loop 案例

    create table a_tab(ver number,id number);create table b_tab(ver number,id number);set timing on DECL ...

  5. 【转】MFC内嵌cef3浏览器内核

    一.cef3内核的下载 可以从http://opensource.spotify.com/cefbuilds/index.html下载,注意:很多版本编译都可以通过 但是运行的时候会崩溃,以cef_b ...

  6. TCP三次握手与四次握手

    背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在 ...

  7. Oracle 迁移 序列

    ---删除序列select 'drop sequence ' || sequence_owner || '.' || SEQUENCE_NAME || ';'from dba_sequenceswhe ...

  8. day07----字符编码解码、文件操作(1)

    字符编码: 什么是字符编码? 字符编码是将人识别的字符转换成计算机能识别的二进制字符(01),转换的规则就是编码表. 人能识别的字符串  与  计算机能识别的二进制字符 两者之间对应关系构成的结构称为 ...

  9. node.js如何引用其它js文件

    以Java来说,比如要实现第三方存储,我可能需要导入对应的库,以maven为例,使用腾讯云或者七牛云.阿里云,我需要导入对应的maven依赖.再比如,有些时候我们封装某个类,而那个类不在该包下,我们需 ...

  10. BZOJ1063 NOI2008 道路设计 树形DP

    题目传送门: BZOJ 题意精简版:给出一棵树,在一种方案中可以将树的若干链上的所有边的边权改为$0$,但需要保证任意两条链之间没有交点.问最少的一种方案,使得从根节点到其他节点经过的边的边权和的最大 ...