二叉树层序遍历实现

二叉树层序遍历实现二叉树的层序遍历下图是一个简单的二叉树例图实现思路:1.创建一个队列用于二叉树的层序遍历。2.将二叉树根节点插入队列中。3.通过while循环遍历二叉树,直至遍历完整个二叉树后则结束循环。4.每次循环开始时先进行出队操作,若当前出队元素为null则证明已经完成层序遍历结束循环循环,若不为null则打印该节点的值,并判断该节点是否存在左右子树,若存在则依次插入队列中。图解上述二叉树的层序遍历过程依次进行图上操作直至最终队列为空时则层序遍历结束。实现代码如下:classTreeNod

大家好,又见面了,我是你们的朋友全栈君。

二叉树的层序遍历

下图是一个简单的二叉树例图

在这里插入图片描述

实现思路:

1.创建一个队列用于二叉树的层序遍历。

2.将二叉树根节点插入队列中。

3.通过while循环遍历二叉树,直至遍历完整个二叉树后则结束循环。

4.每次循环开始时先进行出队操作,若当前出队元素为null则证明已经完成层序遍历结束循环循环,若不为null则打印该节点的值,并判断该节点是否存在左右子树,若存在则依次插入队列中。

图解上述二叉树的层序遍历过程

在这里插入图片描述

在这里插入图片描述

依次进行图上操作直至最终队列为空时则层序遍历结束。

实现代码如下:

class TreeNode{ 
   
    int val;
    TreeNode left;
    TreeNode right;

    public TreeNode(int val) { 
   
        this.val = val;
    }
}
public class day_0410 { 
   
    public static void main(String[] args) { 
   
        TreeNode a=new TreeNode(1);
        TreeNode b=new TreeNode(2);
        TreeNode c=new TreeNode(3);
        TreeNode d=new TreeNode(4);
        TreeNode e=new TreeNode(5);
        TreeNode f=new TreeNode(6);
        TreeNode g=new TreeNode(7);
        a.left=b;
        a.right=c;
        b.left=d;
        b.right=e;
        c.left=f;
        c.right=g;
        level(a);
    }
public static void level(TreeNode root){ 
   
    if (root==null){ 
   
        return;
    }
    Queue<TreeNode> queue=new LinkedList<>();
    //将根节点插入队列中
    queue.offer(root);
    while (true){ 
   
        //创建一个临时变量cur存储出队元素
        TreeNode cur=queue.poll();
        //当没有元素可以出队时则代表已经层序遍历结束,跳出循环
        if (cur==null){ 
   
            break;
        }
        //打印当前节点的值
        System.out.print(cur.val);
        //当前出队节点拥有左子树则将左子树入队
        if (cur.left!=null){ 
   
            queue.offer(cur.left);
        }
        //当前出队节点拥有右子树则将右子树入队
        if (cur.right!=null){ 
   
            queue.offer(cur.right);
        }
     }
  }
}

运行结果如下所示:

在这里插入图片描述

如有不足还请指正,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143385.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ofbiz学习笔记

    ofbiz学习笔记

    2022年1月27日
    54
  • C++基础语法

    C++基础语法基础语法第一个程序#include<iostream>usingnamespacestd;intmain(){cout<<"H

    2021年12月13日
    52
  • 普通交换机可以poe供电吗_poe供电交换机和普通交换机区别

    普通交换机可以poe供电吗_poe供电交换机和普通交换机区别交换机相信大家都比较熟悉,一般说的交换机指的普通交换机,也就是最常见的那种。普通交换机可以传输交换数据,或者局域网内的多个电脑可以相互通信。PoE交换机指可以供电的交换机,跟普通交换机的区别是,它不仅而已传输交换数据,还可以同时给与它连接的设备供电,这样的目的是可以免去额外的电源布线,不用刻意请电工师傅。可能有朋友会问,普通交换机能否改成PoE供电的,如何将普通交换机变成PoE交换机?接下来我们就跟随飞畅科技的小编一起来详细看看吧!普通交换机和poe交换机虽都是交换机,在内部结构有区别的,PoE交换机里

    2022年10月4日
    3
  • 计算机错误代码0x 00000006,什么原因造成了蓝屏 电脑蓝屏错误代码介绍

    计算机错误代码0x 00000006,什么原因造成了蓝屏 电脑蓝屏错误代码介绍电脑蓝屏是在上网的时候再常见到的现象了,造成电脑蓝屏的原因很多,所以微软在操作系统中设计了蓝屏代码,让大家电脑在出现蓝屏的时候能够及时的发现是什么原因造成了蓝屏。一般蓝屏代码都位于屏幕提示文字的第一段或者倒数第三段,但是蓝屏代码都是以“***Stop”开头。编号代码含意00×00000000作业完成。10×00000001不正确的函数。20×00000002系统找不到指定的档案。…

    2022年5月15日
    146
  • 特色网站收集(332个)「建议收藏」

    特色网站收集(332个)「建议收藏」1.del.icio.ushttp://del.icio.us/在线收藏夹.域名很有创意.影响也很广.支持从浏览器导出和导出到浏览器.2.Anonymousehttp://anonymouse.org

    2022年7月3日
    43
  • 快速导出PDF文件中所有图片(使用Adobe Acrobat 10 )「建议收藏」

    快速导出PDF文件中所有图片(使用Adobe Acrobat 10 )「建议收藏」1、用AdobeAcrobat XPro打开一个含有图片的PDF2、点击工具->文档处理->导出所有图像,这样就完成了对PDF文件中所有图片的导出。如果没看到“文档处理”,可以点击下图右上角按钮,选中文档处理即可;导出图片时最好选择一个文件夹,以免默认导出的图片扑满整个桌面。导出图像存放位置设置:导出结果如下图所

    2022年5月8日
    583

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号