1. 程式人生 > >java 從上往下列印二叉樹

java 從上往下列印二叉樹

題目

從上往下打印出二叉樹的每個節點,同層節點從左至右列印。也就是層級遍歷

思路

藉助一個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;		
	}