首页 > 编程语言 >算法题---二叉树层序遍历

算法题---二叉树层序遍历

时间:2024-06-20 23:43:44浏览次数:31  
标签:nowNode TreeNode 层序 --- right 二叉树 null root 节点

二叉树层序遍历:

    class TreeNode {
        TreeNode left;
        TreeNode right;
        int value;
    }
 void levelTraversal(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);
        while (!q.isEmpty()) {
            TreeNode nowNode = q.poll();
            if (nowNode != null) {
                System.out.println(nowNode.value + " ");
                //添加数据节点
                if (nowNode.left != null) {
                    //如果左子节点不为null,则将子节点加入队列
                    q.add(nowNode.left);
                }
                if (nowNode.right != null) {
                    //如果右子节点不为null,则将子节点加入队列
                    q.add(nowNode.right);
                }
            }
        }
    }

 

求二叉树的最大深度:

  int treeDepth(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);
        int depth = 0, count = 0, currentLevelCount = 1;  //nextcount为该层应有的节点个数
        while (!q.isEmpty()) {
            TreeNode nowNode = q.poll();
            count++;
            if (nowNode != null) {
                System.out.println(nowNode.value + " ");
                //添加数据节点
                if (nowNode.left != null) {
                    //如果左子节点不为null,则将子节点加入队列
                    q.add(nowNode.left);
                }
                if (nowNode.right != null) {
                    //如果右子节点不为null,则将子节点加入队列
                    q.add(nowNode.right);
                }

                if (count == currentLevelCount) { //此时该层已经遍历完,队列中的元素应为下一层结点个数
                    depth++;
                    count = 0;
                    currentLevelCount = q.size();
                }
            }
        }
        return depth;
    }
    //递归版本
    public int TreeDepth(TreeNode root) {
        if (root == null) return 0;
        int nLeft = TreeDepth(root.left);
        int nRight = TreeDepth(root.right);
        return (nLeft > nRight) ? (nLeft + 1) : (nRight + 1);
    }

 

标签:nowNode,TreeNode,层序,---,right,二叉树,null,root,节点
From: https://www.cnblogs.com/bimingcong/p/18259689

相关文章

  • ubuntu下使用spdk-rs
    尝试编译安装nixpkgssh<(curl-Lhttps://nixos.org/nix/install)--daemon为nixpkgs换源nix-channel--addhttps://mirrors.ustc.edu.cn/nix-channels/nixpkgs-unstablenixpkgsnix-channel--update对于单独安装的Nix,需要修改或添加相应的配置(~/.config/nix/nix.conf......
  • 【调试笔记-20240617-Linux- frp 结合 nginx 实现内网网站在公网发布】
    调试笔记-系列文章目录调试笔记-20240617-Linux-frp结合nginx实现内网网站在公网发布文章目录调试笔记-系列文章目录调试笔记-20240617-Linux-frp结合nginx实现内网网站在公网发布前言一、调试环境操作系统:Windows10专业版调试环境调试目标二、调试步骤公......
  • LeetCode热题100-第2题
    题目:49.字母异位词分组-力扣(LeetCode)给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。示例1:输入:strs=["eat","tea","tan","ate","nat","bat"]输出:[["bat"],["......
  • 三、用户中心项目笔记----后端多环境实战+原始部署
    后端多环境主要是修改:    依赖的环境地址        数据库地址        缓存地址        消息队列地址        项目端口号    服务器配置后端怎么去区分不同的环境?我们后端的SpringBoot......
  • STM32入门HAL库-GPIO点灯
    目录1.目标2.背景知识3.过程1.目标通过HAL库操作GPIO口,使灯闪烁2.背景知识GPIO即通用输入输出查阅手册,可以了解到STM32中GPIO支持功能这里是点灯,点灯这里用到了GPIO的输出功能3.过程引脚配置界面,选择对应引脚输出功能这里是PB7主函数中编写代码HAL......
  • 仿真模拟--telnet服务两种认证模式(自作)
    自己做的笔记,有问题或看不懂请见解一下~ 目录两个路由器间实现telnet服务(password认证模式)serverclient两个路由器间实现telnet服务(aaa认证模式)serverclient改名tab键补齐不会就扣问号                               ......
  • [翻译]-Detect And Repair Corruption in an Oracle Database
    本文是对这篇文章DetectAndRepairCorruptioninanOracleDatabase[1]的翻译,翻译如有不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!Oracle数据库提供了多种方法检测和修复数据文件中的坏块。主要有下面一些方法:RMAN(BACKUPVALIDATE,RESTOREVA......
  • 鸿蒙开发通信与连接:【@ohos.nfc.cardEmulation (标准NFC-cardEmulation)】
    标准NFC-cardEmulation本模块主要用于操作及管理NFC卡模拟。 说明: 本模块首批接口从APIversion8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。导入模块importcardEmulationfrom'@ohos.nfc.cardEmulation';cardEmulation.isSupportedisS......
  • 鸿蒙开发通信与连接:【@ohos.nfc.tag (标准NFC-Tag)】
    标准NFC-Tag本模块主要用于操作及管理NFCTag。 说明: 本模块首批接口从APIversion8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。导入模块importtagfrom'@ohos.nfc.tag';tag.getNfcATaggetNfcATag(tagInfo:TagInfo):NfcATag获取NFC......
  • 【原创】EtherCAT主站IgH解析(二)-- Linux/Windows/RTOS等多操作系统IgH EtherCAT主站
    版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/前言目前,EtherCAT商用主站有:Acontis、TwinCAT3、KPA、Codesys等,开源EtherCAT主站则主要有两大方案:igh与SOEM,两者设计天差地别,SOEM开源于2008年底1.1.2版本,具备良好......