二叉树的遍历之层序遍历


二叉树T的遍历是访问树中的每一个结点。在访问结点的时候,可以进行结点运算或者修改结点内容等一些相应处理。

根据二叉树的定义,只要二叉树T不为空,则T形式如下:





根据二叉树的结构,二叉树的按层遍历为:

按照树的层,每一层从左到右依次输出

例如下图

按层遍历输出结果为{8,8,3,7,6,5,4}



下面给出按层遍历的实现代码

利用队列的先进先出的特性进行遍历:

step1:先将头节点放入队列中,再以此放入左孩子、右孩子。

step2:依次读取队列的第一个结点,只要结点存在孩子结点,将其孩子按照顺序放入队列。

public class public class LeverOrderTree {

	public void solve(TreeNode root){
		//如果根节点为null,则什么也不返回
		if(root == null){
			return;
		}
		//新的链表初始化,当队列使用
		//设置链表的第一项为first;
		LinkedList
   
   
    
     queue = new LinkedList
    
    
     
     ();
		TreeNode first = null;
		
		//新的链表为空,将树的根节点放入队列中
		if(root != null){
			queue.offer(root);
		}
		
		/*第一层取得树的根节点,
		   第二层:左孩子,右孩子,
		   第三层:左孩子的左孩子,右孩子;右孩子的左孩子,右孩子
		   以此循环,一层一层遍历*/
		while(!queue.isEmpty()){
			first = queue.poll(); 
			System.out.print(first.val + "-->");
			if(first.left != null){
				queue.offer(first.left);
			}
			if(first.right != null){
				queue.offer(first.right);
			}
		}
    
    
   
   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值