填个坑-二叉树层次遍历及应用

本文介绍了二叉树的层次遍历方法,利用队列实现先入先出的原则,并提供了Java代码示例。此外,还展示了层次遍历在实际问题中的应用。
摘要由CSDN通过智能技术生成

有一篇旧文写的是在终端或文件中图形化打印二叉树,当时使用了 队列 ,但后来在学到二叉树的 层次遍历 的时候才意识到当时的实现是真的……蹩脚。

二叉树的层次遍历

如图所示二叉树:

        .--------- 1 ---------.
  .---- 2 ----.          .----3----.
  4           5          6         7
层次遍历结果:1 2 3 4 5 6 7

层次遍历符合先入先出 FIFO 的原则,适合使用 队列 来实现

过程描述:
1 入队 queue: 1
1 出队,打印 1,1 的左结点 2 入队,右结点 3 入队 queue: 2, 3
2 出队,打印 2,2 的左结点 4 入队,右结点 5 入队 queue: 3, 4, 5
3 出队,打印 3,3 的左结点 6 入队,右结点 7 入队 queue: 4, 5, 6, 7
4 出队,打印 4,4 的左结点为 null,不入队,右结点为 null, 不入队 queue: 5, 6, 7
5 出队,打印 5,5 的左结点为 null,不入队,右结点为 null, 不入队 queue: 6, 7
6 出队,打印 6,6 的左结点为 null,不入队,右结点为 null, 不入队 queue: 7
7 出队,打印 7,7 的左结点为 null,不入队,右结点为 null, 不入队 queue:
队空,遍历结束

代码示例:(用Java写过,就直接贴上来了)

	//levelorder 
	public void levelorder() {
   
		System.out.println("levelorder:");
		LinkedQueue<BinaryNode<T>> queue = new LinkedQueue<BinaryNode<T>>();
		queue.add(root);
		while (!queue.isEmpty()) {
   
			BinaryNode<T> p = queue.poll();
			System.out.print(p.toString() + " ");
			if (p != null) {
   
				if (p.left != null) queue.add(p.left);
				if (p.right != null) queue.add(p.right);
			}
		}
		System.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值