劍指Offer-Java-從上往下打印二叉樹

從上往下打印二叉樹


題目:
從上往下打印出二叉樹的每個節點,同層節點從左至右打印。
代碼:

package com.sjsq.test;

import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;

/**
 * @author shuijianshiqing
 * @date 2020/5/24 10:43
 */

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

public class Solution {

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {

        // 定義雙向隊列
        Deque<TreeNode> deque = new LinkedList<>();
        // 定義數組來存放結果
        ArrayList<Integer> result = new ArrayList<>();

        if(root == null){
            return result;
        }

        deque.add(root);

        while(!deque.isEmpty()){
            TreeNode node = deque.getFirst();
            deque.pollFirst();
            result.add(node.val);

            // 判斷有沒有左子樹
            if(node.left != null){
                deque.addLast(node.left);
            }

            // 判斷有沒有右子樹
            if(node.right != null){
                deque.addLast(node.right);
            }
        }

        return result;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章