從上往下列印二叉樹 java
阿新 • • 發佈:2018-11-08
從上往下列印二叉樹 java
題目描述
從上往下打印出二叉樹的每個節點,同層節點從左至右列印。
思路:
按照層次遍歷的方法,使用佇列輔助。
1.將根結點加入佇列。
2.迴圈出隊,列印當前元素,若該結點有左子樹,則將其加入佇列,若有右子樹,將其加入佇列。
3.直到佇列為空,表明已經列印完所有結點。
程式碼1:
import java.util.*; public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> al = new ArrayList<>(); ArrayList<TreeNode> queue = new ArrayList<>(); if(root == null){ return al; } queue.add(root); while(queue.size() != 0){ TreeNode temp = queue.remove(0); al.add(temp.val); if(temp.left != null){ queue.add(temp.left); } if(temp.right != null){ queue.add(temp.right); } } return al; } }
程式碼2:
public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> al = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); if(root == null){ return al; } queue.offer(root); while(!queue.isEmpty()){ TreeNode temp = queue.poll(); if(temp.left != null){ queue.offer(temp.left); } if(temp.right != null){ queue.offer(temp.right); } al.add(temp.val); } return al; } }