剑指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;
    }
}

你可能感兴趣的:(java,队列,二叉树)