直接上代码

package te.com;

import java.util.LinkedList;
import java.util.Queue;
import java.util.logging.Level; class BinNode{
Integer val;
BinNode leftNode;
BinNode rightNode;
public BinNode(Integer val) {
this.val = val;
}
public BinNode() {
} public Integer getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public BinNode getLeftNode() {
return leftNode;
}
public void setLeftNode(BinNode leftNode) {
this.leftNode = leftNode;
}
public BinNode getRightNode() {
return rightNode;
}
public void setRightNode(BinNode rightNode) {
this.rightNode = rightNode;
} } public class binTree {
public static void main(String[] args) {
Integer[] a = {3,9,20,null,null,15,7,null,null,null,null};
int i=1;
BinNode root = new BinNode(a[0]); // 根节点
BinNode current = null;
Integer value = null; //层序创建二叉树
LinkedList<BinNode> queue = new LinkedList<BinNode>();
queue.offer(root);
while(i<a.length) {
current = queue.poll();//从链表中移除并获取第一个节点
value = a[i++];
if(value!=null) {
BinNode left =new BinNode(value);
current.setLeftNode(left);//创建当前节点的左孩子
queue.offer(left); // 在链表尾部 左孩子入队
}
value=a[i++];
if(value!=null) {
BinNode right =new BinNode(value);
current.setRightNode(right);//创建当前节点的右孩子
queue.offer(right);// 在链表尾部 右孩子入队
} }
levelIetrator(root); }
public static int levelIetrator(BinNode root) {
if(root==null) {
return -1;
}
Queue<BinNode> queue = new LinkedList<BinNode>();
BinNode current = null;
queue.offer(root);
while(!queue.isEmpty()) {
current = queue.poll();
if(current.getLeftNode()!=null) {
queue.offer(current.getLeftNode());
System.out.println("节点"+current.val+"的左孩子是"+current.getLeftNode().val);
}else {
System.out.println("节点"+current.val+"没有左孩子");
}
if(current.getRightNode()!=null) {
queue.offer(current.getRightNode());
System.out.println("节点"+current.val+"的右孩子是"+current.getRightNode().val);
}else {
System.out.println("节点"+current.val+"没有右孩子");
}
}
return 1;
}
}

运行结果

Java 层序创建和遍历二叉树的更多相关文章

  1. C++ 创建和遍历二叉树

    一个简单的创建和遍历二叉树的C++程序,二叉树的其他操作程序待更新. #include <iostream> using namespace std; struct BiTNode{ ch ...

  2. 请使用java来构造和遍历二叉树?

    [分析] 二叉树的结构:根节点.左子树.右子树.其中左子树的值必须小于根节点,右子树的值必须大于根节点.构造这种树结构,就是创建一个类,并提供一个方法,当给定一个值时,它能够自动创建节点并自动挂到二叉 ...

  3. Java实现二叉树的创建和遍历操作(有更新)

    博主强烈建议跳过分割线前面的部分,直接看下文更新的那些即可. 最近在学习二叉树的相关知识,一开始真的是毫无头绪.本来学的是C++二叉树,但苦于编译器老是出故障,于是就转用Java来实现二叉树的操作.但 ...

  4. java创建二叉树并实现非递归中序遍历二叉树

    java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码 ...

  5. java创建二叉树并递归遍历二叉树

    二叉树类代码: package binarytree; import linkqueue.LinkQueue; public class BinaryTree { class Node { publi ...

  6. JAVA递归、非递归遍历二叉树

    前序遍历:1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历:1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历:1.后序遍历左子树 2.后序遍历右子树 3.访问根节点-- ...

  7. Java递归方法遍历二叉树的代码

    将内容过程中经常用的内容做个记录,如下内容内容是关于Java递归方法遍历二叉树的内容. package com.wzs; public class TestBinaryTree { public st ...

  8. c/c++二叉树的创建与遍历(非递归遍历左右中,破坏树结构)

    二叉树的创建与遍历(非递归遍历左右中,破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...

  9. JAVA递归、非递归遍历二叉树(转)

    原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...

随机推荐

  1. 网上搜到的权限系统demo

    网上搜到的权限系统demo http://www.sojson.com/shiro

  2. redis-3.2 集群

    目录 简介 集群简介 Redis 集群的数据分片 Redis 集群的主从复制模型 Redis 一致性保证 redis 集群间的通信 环境 安装Ruby 部署 安装Redis略 创建集群 集群节点信息 ...

  3. JDK JRE JVM的区别

    Jdk[Java Development ToolKit]就是java开发工具箱, JDK是整个JAVA的核心,里边包含了jre,它除了包含jre之外还包含了一些javac的工具类,把java源文件编 ...

  4. ReentrantLock$Sync.tryRelease java.lang.IllegalMonitorStateException

    早上一来,例行性的看主要环境的运行情况,发现有个环境中有如下异常: 17-02-28 08:13:37.368 ERROR pool-2-thread-65 com.ld.net.spider.Spi ...

  5. 值得收藏的8个Web端组件库

    值得收藏的8个Web端组件库 Ant Design 介绍:一个服务于企业级产品的设计体系,基于『确定』和『自然』的设计价值观和模块化的解决方案,让设计者专注于更好的用户体验. 组件库地址:https: ...

  6. openstack cloud init set password

    设置代理和password #!/bin/bash cd /home/ubuntu wget otcloud-gateway.bj.intel.com/script.tar.gz ]; then cu ...

  7. jq svg 修改image的xmlns:xlink及图片的显隐

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. 寻找复杂背景下物体的轮廓(OpenCV / C++ - Filling holes)

    一.问题提出 这是一个来自"answerOpenCV"(http://answers.opencv.org/question/200422/opencv-c-filling-hol ...

  9. RAC +MVVM

    https://blog.csdn.net/capf_sam/article/details/60960530 https://blog.csdn.net/capf_Sam/article/detai ...

  10. CentOS7 安装git服务器

    在CentOS7系统中安装git服务器有两种方法,分别为yum安装和下载git安装包手动安装,这篇文章只有下载git安装包手动安装方法. 方法一:使用yum安装 暂无 方法二:下载git安装包手动安装 ...