题目描述

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

https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

解题想法

队列实现,保存左节点、右节点,然后按照先进先出的顺序打印

代码实现

  1. import java.util.ArrayList;
  2. import java.util.LinkedList;
  3. import java.util.Queue;
  4. /**
  5. public class TreeNode {
  6. int val = 0;
  7. TreeNode left = null;
  8. TreeNode right = null;
  9. public TreeNode(int val) {
  10. this.val = val;
  11. }
  12. }
  13. */
  14. public class Solution {
  15. public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
  16. ArrayList<Integer> list = new ArrayList<>();
  17. if(root == null){
  18. return list;
  19. }
  20. Queue<TreeNode> queue = new LinkedList<>();
  21. queue.add(root);
  22. while(queue.size() > 0){
  23. TreeNode node = queue.poll();
  24. list.add(node.val);
  25. if (node.left != null){
  26. queue.add(node.left);
  27. }
  28. if (node.right != null){
  29. queue.add(node.right);
  30. }
  31. }
  32. return list;
  33. }
  34. }