从上往下打印二叉树 --剑指offer

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

思路:借助一个辅助链表来存储相对应的树的结点

import java.util.ArrayList;
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>  arrayList=new ArrayList<>(); //打印链表
      if(root == null){
          return arrayList; //这个地方不能返回null 返回null的话通过不了测试用例
      }
        LinkedList<TreeNode> linkedList=new LinkedList<>();//辅助链表
        linkedList.add(root);
        while (!linkedList.isEmpty()){
            TreeNode node=linkedList.removeFirst();
            if(node.left != null){
                linkedList.add(node.left);
            }
            if(node.right != null){
                linkedList.add(node.right);
            }
            arrayList.add(node.val);
        }
      return arrayList;
    }
}
原文地址:https://www.cnblogs.com/nlw-blog/p/12426125.html