直接上代码

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. 基于ARM Cortex-M0+ 的Bootloader 参考

    源: 基于ARM Cortex-M0+内核的bootloader程序升级原理及代码解析

  2. pyqt5 树节点点击实现多窗口切换

    # coding=utf-8 import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui ...

  3. PHP中array_map与array_column之间的关系分析

    array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上array_column();快速实现:将二维数组转为一维数组 array_co ...

  4. oracle RAC如何正确地删除ASM磁盘组

    1.登录到命令行 切换到grid用户 [grid@swnode1 ~]$ sqlplus / as sysasm SQL*Plus: Release Production on Wed May :: ...

  5. [c/c++] programming之路(10)、格式符后续

    一.格式符 1. f格式符 #include<stdio.h> #include<stdlib.h> void main(){ printf("%f",10 ...

  6. mysql 用存储过程插入11位 随机数

    BEGIN #Routine body goes here... ; ); ); ); ); ); ); ); ); ); ); ); ); ) DEFAULT ''; ); ); WHILE row ...

  7. Git总结笔记

    git相关配置 # 设置你的 Git 用户名 git config --global user.name "<Your-Full-Name>" # 设置你的 Git 邮 ...

  8. 建立TCP连接过程

    1.服务器实例化一个ServerSocket 对象, 表示通过服务器上的端口通信. ServerSocket serverSocket = new ServerSocket(port); 2.服务器调 ...

  9. bzoj1497 [NOI2006]最大获利 最大权闭合子图

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大权闭合子图的裸题 一开始知道是这个最大权闭合子图(虽然我不知道名字),但是我 ...

  10. Sorting arrays in NumPy by column

    https://stackoverflow.com/questions/2828059/sorting-arrays-in-numpy-by-column I suppose this works:  ...