java 從上往下列印二叉樹
阿新 • • 發佈:2019-02-07
題目
從上往下打印出二叉樹的每個節點,同層節點從左至右列印。也就是層級遍歷
思路
藉助一個ArrayList儲存該節點和節點的左右孩子。(這是一點都沒看書,自己做出來的,開心^-^)
步驟 | ArrayList中的數 | 列印的數 |
1 | 8,6,10 | 8 |
2 | 6,10,5,7 | 6 |
3 | 10,5,7,9,11 | 10 |
4 | 5,7,9,11(之後沒有孩子) | 5 |
5 | 7,9,11 | 7 |
6 | 9,11 | 9 |
7 | 11 | 11 |
8 | null | 結束 |
程式碼
public static class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<TreeNode> temp=new ArrayList<TreeNode>(); ArrayList<Integer> result=new ArrayList<Integer>(); TreeNode node; if(root==null) return result; temp.add(root); while(!temp.isEmpty()){ node=temp.get(0); if(node.left!=null) temp.add(node.left); if(node.right!=null) temp.add(node.right); result.add(temp.remove(0).val); } return result; }