博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer LevelTraversalTree 层序遍历二叉树
阅读量:4207 次
发布时间:2019-05-26

本文共 1452 字,大约阅读时间需要 4 分钟。

题目描述:

从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。

思路:

1.循环+队列 每次扫描本层的所有节点放入队列 再从队头读取一个节点继续遍历子节点

public static void printByLoop(BinaryTreeNode root) {        Queue
queue = new LinkedBlockingQueue<>(); if (root == null) {
//如果二叉树为空 return; } while (root != null) { System.out.print(root.value + " "); if (root.leftNode != null) { queue.add(root.leftNode); } if (root.rightNode != null) { queue.add(root.rightNode); } root = queue.poll(); } }

2.递归实现 必须先计算出树的高度 再打印每层的节点

public static void printByRecursion(BinaryTreeNode root) {        if (root == null) {            return;        }        int dep = depth(root);        for (int i = 1; i <=dep; i++) {            print(root, i);        }    }    private static void print(BinaryTreeNode root, int level) {        if (root == null || level < 1) {            return;        }        if (level == 1) {            System.out.print(root.value + " ");        }        print(root.leftNode, level - 1);        print(root.rightNode, level - 1);    }    private static int depth(BinaryTreeNode root) {        if (root == null) {            return 0;        }        //计算左右子树的高度        int left = depth(root.leftNode);        int right = depth(root.rightNode);        if (left > right) {            return left + 1;        } else {            return right + 1;        }    }

转载地址:http://nhqli.baihongyu.com/

你可能感兴趣的文章
Linux文件和设备编程
查看>>
文件描述符
查看>>
终端驱动程序:几个简单例子
查看>>
登录linux密码验证很慢的解决办法
查看>>
fcntl函数总结
查看>>
HTML条件注释
查看>>
Putty远程服务器的SSH经验
查看>>
内核态与用户态
查看>>
使用mingw(fedora)移植virt-viewer
查看>>
趣链 BitXHub跨链平台 (4)跨链网关“初介绍”
查看>>
C++ 字符串string操作
查看>>
MySQL必知必会 -- 了解SQL和MySQL
查看>>
MySQL必知必会 -- 使用MySQL
查看>>
MySQL必知必会 -- 数据检索
查看>>
MySQL必知必会 -- 排序检索数据 ORDER BY
查看>>
MySQL必知必会 -- 数据过滤
查看>>
MYSQL必知必会 -- 用通配符进行过滤
查看>>
MYSQL必知必会 -- 用正则表达式进行搜索
查看>>
MySQL必知必会 -- 创建计算字段
查看>>
MySQL必知必会 -- 使用数据处理函数
查看>>