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值类型的排序二叉树 二叉树 二叉树是一个递归的数据结构,每个节点最多有两个子节点. 通常二叉树是二分查找树,每个节点它的值大于或者等于在它左子树节点上的值,小于或者等于 ...
随机推荐
- 基础篇:详解JAVA对象实例化过程
目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...
- 一些JAVA题目
进程间通信方式有哪些 1)管道 管道分为有名管道和无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系.无明管道一般用于两个 ...
- Go-注释
什么是注释? 注释是给开发人员看的,目的是降低开发人员阅读代码的时间成本和代码阅读困难程度 Go-注释内容 1. 包注释,位于某个包下Go程序文件的顶部 2. 函数注释,位于Go函数的头部 3. 代码 ...
- 零基础学习Kmeans聚类算法的原理与实现过程
内容导入: 聚类是无监督学习的典型例子,聚类也能为企业运营中也发挥者巨大的作用,比如我们可以利用聚类对目标用户进行群体分类,把目标群体划分成几个具有明显特征区别的细分群体,从而可以在运营活动中为这些细 ...
- JAVA运行环境 和 Java Applet的运行环境 的区别
Java小程序,也就是Java Applet,可以在Web浏览器中运行.Java Applet必须以<applet>脚本的形式嵌入到HTML页面中,才能在web浏览器中运行. 之前总以为本 ...
- Spring Boot 第六弹,拦截器如何配置,看这儿~
持续原创输出,点击上方蓝字关注我吧 目录 前言 Spring Boot 版本 什么是拦截器? 如何自定义一个拦截器? 如何使其在Spring Boot中生效? 举个栗子 思路 根据什么判断这个接口已经 ...
- Java (一)下载APACHE Commons IO
一,进入APACHE的官网,在首页往下找APACHE PROJECT LIST > Commons,点击进入. 二,进入Apache Commons页面,找IO组件,点击进入. 三.点击链接Do ...
- Mat对象与像素操作 OpenCV C++
Mat对象,分为两个部分,头部和数据部分 Mat对象拷贝之后是相互独立的 Mat对象有三种创建方法 CV_8UC1单通道,CV_8UC2双通道,CV_8UC3三通道,通道数 Scalar(0-255, ...
- DBA提交脚步规范
工作中需要走脚步流程,申请修改数据库,总结一些常用的语句:)提交时注明为DDL/DML_需求号_日期(各公司标准不一样)//修改字段长度使用;alter table t_task modify tas ...
- [leetcode] 剑指 Offer 专题(一)
又开了一个笔记专题的坑,未来一两周希望能把<剑指Offer>的题目刷完