二叉树层序遍历实现

二叉树层序遍历实现二叉树的层序遍历下图是一个简单的二叉树例图实现思路: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python输入方式大全

    python输入方式大全python输入方式总结写在开头:在学算法过程中想温习python结果发现连输入都不清楚我是菜鸡总结一下python的输入方式适用于各种网站的算法题目的输入格式单个输入 #单个输入n=input()#无参数默认返回字符串n=input(“有提示参数的输入”)#有提示性输入语句的输入,仍是以str类型返回n=int(input())#根据给定的类型输入,返回值类型intn=float(input())#根据给定的类型输入,返回

    2025年6月10日
    4
  • 使用Struts之ActionForm

    使用Struts之ActionForm使用Struts之鸟瞰ActionForm是窗体的对象化表示,它本身其实是个JavaBean,除了标准的getter与setter等方法之外,还提供有reset()、validate()等方法供Struts组件呼叫。当透过发送请求来到ActionServlet后,ActionServlet会从ActionMapping对象中得知所使用的ActionForm对象,这是在struts-con

    2025年6月20日
    3
  • JAVA初体验

    JAVA初体验目录 nbsp 1 什么是软件开发 2 人机交互方式 3 JAVA 语言概述 3 1JAVA 语言的三种技术架构 3 2JAVA 语言的跨平台性 4 JAVA 开发环境 4 1 nbsp JDK JRE JVM 之间的关系 4 2 为什么配置 path 变量 5 Java 程序的编写 编译和运行 1 什么是软件开发 软件 一系列按照特定顺序组织的计算机数据和指令的集合 软件是由程序 数

    2025年10月25日
    4
  • h3c 配置ssh登录_H3交换机SSH跳转

    h3c 配置ssh登录_H3交换机SSH跳转1.system-view2.public-keylocalcreatersasshserverenable3.user-interfacevtyvty号(04)authentication-modescheme上述操作是设置一个VTY的,如果允许同时登陆多个,需要登几个就设几个VTY,重复上面俩操作即可protocolinboundall4.q…

    2022年10月9日
    4
  • poj1142_poj是什么意思

    poj1142_poj是什么意思poj1142题解

    2022年10月1日
    3
  • Java:使用wait()与notify()实现线程间协作

    Java:使用wait()与notify()实现线程间协作

    2021年7月26日
    53

发表回复

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

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