package jianzhiOffer; import java.util.ArrayList; /** * 從上往下打印出二叉樹的每一個節點,同層節點從左至右打印。 * * @author user 思路:本題中咱們利用層序遍歷的思想,首先將樹中全部節點 按照一層從左到右依次保存到ArrayList中,而後在逐一取出 * 節點的值添加到集合中,最後返回集合。 */ class TreeNode3 { int val = 0; TreeNode3 left = null; TreeNode3 right = null; public TreeNode3(int val) { this.val = val; } } public class ch22 { int i = 0; int count = 0; boolean flag = true; ArrayList<Integer> arr = new ArrayList<>(); public ArrayList<Integer> PrintFromTopToBottom(TreeNode3 root) { ArrayList<TreeNode3> node = new ArrayList<>(); if (root != null) { node.add(root); while (flag) { if (root.left != null) { node.add(root.left); count++; } if (root.right != null) { node.add(root.right); count++; } // i老是一層一層從左往右的移動 if (i < count) { i++; root = node.get(i); } else { flag = false; } } } for (int i = 0; i < node.size(); i++) { arr.add(node.get(i).val); } return arr; } }