博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 二叉树遍历
阅读量:5128 次
发布时间:2019-06-13

本文共 1587 字,大约阅读时间需要 5 分钟。

package com.lever;

import java.util.LinkedList;

import java.util.Queue;

/**

* 二叉树遍历
* @author lckxxy
*
*/
public class Node {

public int value;

public Node left;
public Node right;

public Node(int v) {

this.value = v;
this.left = null;
this.right = null;
}

public static void main(String[] args) {

StringBuffer str = new StringBuffer();

str.append("hello world");
String test = str.toString();
System.out.println(test.replace(" ", "%20"));

Node n1 = new Node(1);

Node n2 = new Node(2);
Node n3 = new Node(3);
Node n4 = new Node(4);
Node n5 = new Node(5);
Node n6 = new Node(6);
Node n7 = new Node(7);
Node n8 = new Node(8);
Node n9 = new Node(9);
Node n10 = new Node(10);
n1.left = n2;
n1.right = n3;
n2.left = n4;
n2.right = n5;
n3.left = n6;
n3.right = n7;
n4.left = n8;
n4.right = n9;
n5.left = n10;
levelTravel(n1);
}

/**

*
* @param root
* 树根节点
* 层序遍历二叉树,用队列实现,先将根节点入队列,只要队列不为空,然后出队列,并访问,接着讲访问节点的左右子树依次入队列
*/
public static void levelTravel(Node root) {

if (root == null)

return;
// 当前行最后一个元素
Node last = root;
// 下一行最后一个元素
Node nlast = root.right == null ? root.left : root.right;
Queue q = new LinkedList();
q.add(root);
while (!q.isEmpty()) {
Node temp = (Node) q.poll();
System.out.print(temp.value + " ");
if (temp.left != null) {
q.add(temp.left);
// 如果左儿子不为空,把nlast置为左儿子,这样保证nlast永远是当前行最新一个
nlast = temp.left;
}

if (temp.right != null) {

q.add(temp.right);
// 如果右儿子不为空,把nlast置为右儿子
nlast = temp.right;
}
// 如果当前node跟last相同,说明该换行了,输出换行符,并将nlast的赋给last
if (temp.equals(last)) {
System.out.println();
last = nlast;
}
}
}
}

转载于:https://www.cnblogs.com/gentleman-cklai/p/7107116.html

你可能感兴趣的文章
vs------各种错误解决方法
查看>>
JavaScript基础---语言基础(3)
查看>>
团队站立会议08
查看>>
IOI1998 Polygon [区间dp]
查看>>
硬链接和符号链接的区别
查看>>
docker-swarm
查看>>
接口和抽象类
查看>>
poj2151 Check the difficulty of problems(概率dp)
查看>>
UI- UINavigationController UITabBarController 使用总结
查看>>
BZOJ3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
查看>>
mysql 中 時間和日期函數大全
查看>>
mongodb基本语法
查看>>
[凯立德]2014全分辨率C-Car 4.0机车C2610版完美懒人包
查看>>
[LeetCode] Same Tree
查看>>
给Entity Framework添加执行的超时时间
查看>>
【总结】瞬时高并发(秒杀/活动)Redis方案(转)
查看>>
numpy模块
查看>>
iPhone图形开发绘图小结
查看>>
从零开始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程
查看>>
Android应用程序线程消息循环模型分析
查看>>