从上到下打印二叉树(剑指offer-22)

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

题目解析

使用队列来进行层次遍历,本质上就是宽搜。

题目解答

import java.util.*;
/**
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) {
        Queue<TreeNode> queue  = new LinkedList<>();//利用队列先进先出的特点,放入遍历二叉树的节点,维护宽搜。
        ArrayList<Integer> result = new ArrayList<>();
        if(root!=null) 
            queue.add(root);
        //开始迭代
        while(!queue.isEmpty()){
            TreeNode node = queue.peek();
            result.add(node.val);//将当前节点值放入结果中
            if(node.left!=null) queue.add(node.left);
            if(node.right!=null) queue.add(node.right);
            
            queue.poll();//当前节点值已经放入结果中,删除该节点
        }
        
        return result;
    }
}
原文地址:https://www.cnblogs.com/yzhengy/p/13229000.html