本文主要是介绍剑指offer:(23)举例让抽象问题具体化 :从上往下打印二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路: 二叉树的层次遍历么,借助一个队列就可以了
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);}}
这篇关于剑指offer:(23)举例让抽象问题具体化 :从上往下打印二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!