二叉樹的層次遍歷

二叉樹的層次遍歷

使用一個隊列保存先進的節點,再彈出。

/**
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) {
        LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
        
        ArrayList<Integer> list = new ArrayList<Integer>();
        //保存當前的節點
        TreeNode currentNode = root;
        
        while(currentNode != null){
            //把當前節點的值放進遍歷集合中
            list.add(currentNode.val);
            //若當前節點的左右子節點不為空,加入隊列
            if(currentNode.left != null){
                queue.offer(currentNode.left);
            }
            
            if(currentNode.right != null){
                queue.offer(currentNode.right);
            }
            
            //彈出一個隊列,當彈出一個null時循環結束
            currentNode = queue.poll();
        }
        
        return list;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容