import java.util.ArrayList; /** * 题目: * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 * *解题思路: * 每次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到 * 一个队列的末尾。接下来到队列的头部取出最早进入队列的节点,重复前面 * 的打印操作,直至队列中的所有节点都被打印出来。 * */ public class P171_PrintBinaryTreeFromTopToBottom { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new ArrayList<>(); if (root == null) { return result; } //存放树节点 ArrayList<TreeNode> temp = new ArrayList<>(); temp.add(root); while (!temp.isEmpty()) { TreeNode node = temp.remove(0); if (node.left != null) { temp.add(node.left); } if (node.right != null) { temp.add(node.right); } result.add(node.val); } return result; } public static void main(String[] args) { TreeNode node1 = new TreeNode(8); TreeNode node2 = new TreeNode(6); TreeNode node3 = new TreeNode(10); TreeNode node4 = new TreeNode(5); TreeNode node5 = new TreeNode(7); TreeNode node6 = new TreeNode(9); TreeNode node7 = new TreeNode(11); node1.left=node2; node1.right = node3; node2.left = node4; node2.right = node5; node3.left = node6; node3.right = node7; P171_PrintBinaryTreeFromTopToBottom test = new P171_PrintBinaryTreeFromTopToBottom(); ArrayList<Integer> result = test.PrintFromTopToBottom(node1); System.out.print(result); } }
剑指offer:不分行从上到下打印二叉树
最新推荐文章于 2020-09-14 08:05:00 发布