剑指offer 面试题23 从上到下打印二叉树
来源:互联网 发布:网络的弊辩论赛资料 编辑:程序博客网 时间:2024/06/05 02:05
剑指offer 面试题23 从上到下打印二叉树
题目:
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
例如输入下图的二叉树,则依次打印出 8、6、10、5、7、9、11.
package algorithm.foroffer.top30;import java.util.LinkedList;import java.util.Queue;/** * Created by liyazhou on 2017/5/28. * 面试题23:从上往下打印二叉树 * * 题目: * 从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 * 例如输入下图的二叉树,则依次打印出 8、6、10、5、7、9、11. * 8 * / \ * 6 10 * / \ / \ * 5 7 9 11 * * 问题: * 1. 层次遍历二叉树 * * 思路: * 1. 层次遍历二叉树,是广度优先搜索,需要使用队列 * 2. 创建队列,并把根结点入队 * 循环:队列不为空 * 队列的首元素出队,并访问该元素 * 如果当前元素的左孩子不为空,则入队 * 如果当前元素的右孩子不为空,则入队 */class TreeNode23{ int value; TreeNode23 left; TreeNode23 right; public TreeNode23(int value){ this.value = value; } public void setChildren(TreeNode23 left, TreeNode23 right) { this.left = left; this.right = right; }}public class Test23 { /** * 层次遍历二叉树 * @param root 二叉树的根结点 */ public static void levelVisitTree(TreeNode23 root){ if (root == null) return; Queue<TreeNode23> queue = new LinkedList<>(); // queue.offer(root); // while (!queue.isEmpty()){ for (queue.offer(root); !queue.isEmpty();){ TreeNode23 currNode = queue.poll(); System.out.print(currNode.value + "\t"); if (currNode.left != null) queue.offer(currNode.left); if (currNode.right != null) queue.offer(currNode.right); } } public static void main(String[] args){ TreeNode23 root = generateTree(); Test23.levelVisitTree(root); } private static TreeNode23 generateTree() { TreeNode23 treeNode0 = new TreeNode23(8); TreeNode23 treeNode1 = new TreeNode23(6); TreeNode23 treeNode2 = new TreeNode23(10); TreeNode23 treeNode3 = new TreeNode23(5); TreeNode23 treeNode4 = new TreeNode23(7); TreeNode23 treeNode5 = new TreeNode23(9); TreeNode23 treeNode6 = new TreeNode23(11); treeNode0.setChildren(treeNode1, treeNode2); treeNode1.setChildren(treeNode3, treeNode4); treeNode2.setChildren(treeNode5, treeNode6); return treeNode0; }}
阅读全文
1 0
- 《剑指Offer》面试题23:从上到下打印二叉树
- 剑指offer面试题23:从上到下打印二叉树
- 剑指Offer系列-面试题23:从上到下打印二叉树
- 剑指offer 面试题23 从上到下打印二叉树
- 【剑指offer】面试题32:从上到下打印二叉树
- [剑指offer]python从上到下打印二叉树【面试题9.15】
- 面试题 23: 从上到下打印二叉树
- 面试题23:从上到下打印二叉树
- 【剑指offer】面试题32(2):分行从上到下打印二叉树
- 剑指Offer面试题22栈的压入弹出序列,面试题23从上到下打印二叉树(层序遍历用队列)
- 剑指offer 从上到下打印二叉树
- 剑指Offer_面试题23_从上到下打印二叉树(层序遍历)
- 剑指 offer:从上到下打印二叉树(层序遍历)
- 剑指offer系列之二十一:从上到下打印二叉树
- 剑指offer----从上到下打印二叉树----java实现
- 剑指offer——从上到下打印二叉树
- 【剑指offer-解题系列(22)】从上到下打印二叉树
- 剑指offer——从上到下打印二叉树
- C#连接Access数据库(详解)
- Maven Dependency Search Not Working in Eclipse
- eclipse中执行Ant脚本:Class not found: javac1.8
- 09-排序1 排序 (25分)
- jquery 多个swipper需要注意的问题
- 剑指offer 面试题23 从上到下打印二叉树
- 剑指offer——反转链表
- java基础冒泡,选择和快速排序
- 两个栈实现队列的功能
- SVN服务器搭建和使用(一)
- [Segment tree Beats! || 分块] Codeforces 793F Tinkoff Challenge
- windows 配置 emacs 使用 plantuml
- 数值类型转换练习
- 【Linux】-- MySQL(3) : 约束操作