剑指offer:(23)举例让抽象问题具体化 :从上往下打印二叉树

来源:互联网 发布:网络教育的在职研究生 编辑:程序博客网 时间:2024/06/07 21:59

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

思路:    二叉树的层次遍历么,借助一个队列就可以了

package co.com.jianzhioffer;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Solution23 {public static class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}//循环/*static ArrayList<Integer> result = new ArrayList<Integer>();static Queue<TreeNode> que = new LinkedList<TreeNode>();public static ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {if (root == null)return null;result.add(root.val);if (root.left != null)que.add(root.left);if (root.right != null)que.add(root.right);if (!que.isEmpty()) {root = que.poll();PrintFromTopToBottom(root);}return result;}*/public static ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {ArrayList<Integer> list = new ArrayList<Integer>();if(root == null)  return list; Queue<TreeNode> que = new LinkedList<TreeNode>();que.offer(root);while(!que.isEmpty()){TreeNode node = que.poll();list.add(node.val);if(node.left!=null) que.offer(node.left);if(node.right!=null) que.offer(node.right);}return list;}public static void main(String[] args) {TreeNode root = new TreeNode(1);root.left =  new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);ArrayList<Integer> res = PrintFromTopToBottom(root);System.out.println(res);}}


阅读全文
0 0
原创粉丝点击