Java创建二叉树、二叉树的遍历
public
class
Node {
// 左子节点
public
Node leftNode;
// 右子节点
public
Node rightNode;
// 值
public
Object value;
// 插入 数据
public
void
add(Object v) {
// 如果当前节点没有值,就把数据放在当前节点上
if
(
null
== value)
value = v;
// 如果当前节点有值,就进行判断,新增的值与当前值的大小关系
else
{
// 新增的值,比当前值小或者相同
if
((Integer) v -((Integer)value) <=
0
) {
if
(
null
== leftNode)
leftNode =
new
Node();
leftNode.add(v);
}
// 新增的值,比当前值大
else
{
if
(
null
== rightNode)
rightNode =
new
Node();
rightNode.add(v);
}
}
}
public
static
void
main(String[] args) {
int
randoms[] =
new
int
[] {
67
,
7
,
30
,
73
,
10
,
0
,
78
,
81
,
10
,
74
};
Node roots =
new
Node();
for
(
int
number : randoms) {
roots.add(number);
}
}
import
java.util.ArrayList;
import
java.util.List;
public
class
Node {
// 左子节点
public
Node leftNode;
// 右子节点
public
Node rightNode;
// 值
public
Object value;
// 插入 数据
public
void
add(Object v) {
// 如果当前节点没有值,就把数据放在当前节点上
if
(
null
== value)
value = v;
// 如果当前节点有值,就进行判断,新增的值与当前值的大小关系
else
{
// 新增的值,比当前值小或者相同
if
((Integer) v -((Integer)value) <=
0
) {
if
(
null
== leftNode)
leftNode =
new
Node();
leftNode.add(v);
}
// 新增的值,比当前值大
else
{
if
(
null
== rightNode)
rightNode =
new
Node();
rightNode.add(v);
}
}
}
// 中序遍历所有的节点
public
List<Object> values() {
List<Object> values =
new
ArrayList<>();
// 左节点的遍历结果
if
(
null
!= leftNode)
values.addAll(leftNode.values());
// 当前节点
values.add(value);
// 右节点的遍历结果
if
(
null
!= rightNode)
values.addAll(rightNode.values());
return
values;
}
public
static
void
main(String[] args) {
int
randoms[] =
new
int
[] {
67
,
7
,
30
,
73
,
10
,
0
,
78
,
81
,
10
,
74
};
Node roots =
new
Node();
for
(
int
number : randoms) {
roots.add(number);
}
System.out.println(roots.values());
}
}
Java创建二叉树、二叉树的遍历的更多相关文章
- java创建二叉树并实现非递归中序遍历二叉树
java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码 ...
- Java数据结构之二叉树的基本介绍与递归遍历
二叉树的基本概念: 正如我们所了解的,树是有很多中形态,但是我们规定,形如每个节点最多只能有两个子节点的一种形如称为二叉树.我们将二叉树中该节点的两个子节点分别称作为:左孩子节点和右孩子节点.该节点称 ...
- JAVA递归、非递归遍历二叉树(转)
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...
- Java实现二叉树及相关遍历方式
Java实现二叉树及相关遍历方式 在计算机科学中.二叉树是每一个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(r ...
- Java实现 LeetCode 144 二叉树的前序遍历
144. 二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] /** * Definition for a ...
- Java实现 LeetCode 107 二叉树的层次遍历 II(二)
107. 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null, ...
- Java实现 LeetCode 102 二叉树的层次遍历
102. 二叉树的层次遍历 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 2 ...
- 利用Java实现表达式二叉树
(*^-^*) 什么是二叉树,这里不再介绍,可以自行百度:二叉树.在这里利用java实现“表达式二叉树”. 表达式二叉树的定义 第一步先要搞懂表达式二叉树是个什么东东?举个栗子,表达式:(a+b×(c ...
- java学习之—二叉树
package com.data.java.towtree; import java.io.IOException; /** * 二叉树 * @Title: uminton */ class Node ...
- 用Java实现一个二叉树
介绍 使用Java实现一个int值类型的排序二叉树 二叉树 二叉树是一个递归的数据结构,每个节点最多有两个子节点. 通常二叉树是二分查找树,每个节点它的值大于或者等于在它左子树节点上的值,小于或者等于 ...
随机推荐
- Centos-bash-4.1$
错误: -bash-4.1$ where? 登录Centos时候,会显示4行这样的错误信息-bash-4.1$ why? 1. 该用户家目录缺少 .bashrc .bash_logout .base_ ...
- Python-字符编码-Unicode UTF-8
什么是字符编码? --世界上有很多国家,每个国家都有自己独特的语言,所以在计算机普及的当今世界, 每个国家都有自己的字符编码,本国的软件运行在其他国家的机器上,会出现乱码, 有utf-8,gbk等各种 ...
- Python self用法详解
在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数.例如,定义一个 Person 类: class Person: def __init ...
- centos7安装YouCompleteMe,vim打造成C++的IDE
一.安装python3 1.安装编译工具 yum -y groupinstall "Development tools" yum -y install zlib-devel bzi ...
- spring-boot-route(十二)整合redis做为缓存
redis简介 redis作为一种非关系型数据库,读写非常快,应用十分广泛,它采用key-value的形式存储数据,value常用的五大数据类型有string(字符串),list(链表),set(集合 ...
- 从字节码层次看i++和++i
关于的Java的i++和++i的区别,初学者可能会混淆,这时候有经验的同学或同事就会告诉你,++在后,就会立马加值, ++在后则会等会儿再加,所以如果i == 0 ,那么i++ == 0,++i == ...
- 用 Java 实现的八种常用排序算法
八种排序算法可以按照如图分类 交换排序 所谓交换,就是序列中任意两个元素进行比较,根据比较结果来交换各自在序列中的位置,以此达到排序的目的. 1. 冒泡排序 冒泡排序是一种简单的交换排序算法,以升序排 ...
- 多测师讲解自动化--rf关键字--断言(下)_高级讲师肖sir
断言: 1.1Page Should Contain Maximize Browser Window sleep 2 Comment Page Should Contain hao123 #断言当前页 ...
- MeteoInfoLab脚本示例:中尺度气旋散点图
全球长时间序列中尺度气旋数据(http://cioss.coas.oregonstate.edu/eddies/)有netCDF格式,散点数据类型,只有一个很大的维Nobs = 2590938.尝试读 ...
- day25 Pyhton学习 MD5加密.日志
一.MD5加密 MD5是一种不可逆的加密算法. 它是可靠的. 并且安全的. 在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作 import ha ...