劍指offer——從上到下列印二叉樹
阿新 • • 發佈:2019-01-31
題目描述:
從上往下打印出二叉樹的每個節點,同層節點從左至右列印。
思路:
此題實際上就是二叉樹層序遍歷方法的考察,具體思路是:使用一個集合(或者棧,但是相對來說使用棧操作會方便一些)來儲存遍歷的節點,還需要建立一個集合用來儲存最後輸出的遍歷序列。從根節點開始遍歷,首先把該節點放入集合中,並輸出其值,之後便從集合中移除該節點,不過在此之前需要判斷該節點是否有左右孩子,如果有左右(滿足其一就可以)孩子,便把左右孩子放入集合中。每次輸出值後便把節點具體的值放入遍歷集合中,作為最後的返回結果。
程式碼實現:
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;
}
}