1. 程式人生 > >劍指offer——從上到下列印二叉樹

劍指offer——從上到下列印二叉樹

題目描述:

從上往下打印出二叉樹的每個節點,同層節點從左至右列印。

思路:

此題實際上就是二叉樹層序遍歷方法的考察,具體思路是:使用一個集合(或者棧,但是相對來說使用棧操作會方便一些)來儲存遍歷的節點,還需要建立一個集合用來儲存最後輸出的遍歷序列。從根節點開始遍歷,首先把該節點放入集合中,並輸出其值,之後便從集合中移除該節點,不過在此之前需要判斷該節點是否有左右孩子,如果有左右(滿足其一就可以)孩子,便把左右孩子放入集合中。每次輸出值後便把節點具體的值放入遍歷集合中,作為最後的返回結果。

程式碼實現:

import java.util.ArrayList;
import java.util.Queue;
import
java.util.LinkedList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new
ArrayList<Integer>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); if(root == null) return result; queue.add(root); while(!queue.isEmpty()){ TreeNode tempNode = queue.poll(); result.add(tempNode.val); if(tempNode.left != null
) queue.add(tempNode.left); if(tempNode.right != null) queue.add(tempNode.right); } return result; } }