微软算法100题16 按层遍历二叉树
2015-10-23 18:30
330 查看
第16 题:
题目(微软):
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11
思路:遇到这种按层执行或者按次序执行的动作,一般会联想到队列
题目(微软):
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11
思路:遇到这种按层执行或者按次序执行的动作,一般会联想到队列
package com.rui.microsoft; import java.util.ArrayDeque; import java.util.Deque; public class Test16_TraverseTreeHorizontal { public static void main(String[] args) { Node node4 = new Node(4); Node node3 = new Node(3); Node node5 = new Node(5); Node node2 = new Node(2); node4.left = node3; node4.right = node5; node3.left = node2; Test16_TraverseTreeHorizontal.traverse(node4); } public static void traverse(Node node){ Node head = node; if(null == head) return; //leaf if(null == head.left && null == head.right){ System.out.println(head.value); return; } //Non-leaf Deque<Node> queue = new ArrayDeque<Node>(); queue.offer(head); while(!queue.isEmpty()){ Node n = queue.poll(); System.out.println(n.value); Node left = n.left; Node right = n.right; if(null != left)queue.offer(left); if(null != right)queue.offer(right); } } static class Node{ int value; Node left; Node right; Node(int v){ this.value = v; } } }
相关文章推荐
- 百度地图显示一定范围内的点
- c语言指针介绍
- delphi学习-各种文件介绍
- 欢迎使用CSDN-markdown编辑器
- testGeneric
- java中强引用 软引用 弱引用 虚引用的理解
- Android Studio 混淆出现can't find referenced method 的解决方法
- 概率论经典问题之匹配问题
- c语言中数组长度的计算
- Volley框架缓存过大导致oom
- 最大子矩阵
- druid  overlord集群datasouce接入
- 关于兼容性的一些个人工作总结
- oracle 第18章 索引
- [转]使用Openssl的AES加密算法
- js常用函数
- js eval方法解析java后台传来的json字符串
- druid数据存储原理介绍
- sqlite常用命令
- 取当前地址栏url