二叉树之从上往下打印二叉树

1.本题知识点

   二叉树,队列

2. 题目描述

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

3. 思路

   每次打印一个节点的时候,都要判断其是否有左右子节点,如果有,依次放入队列的末尾。然后,就从队列中取出头部元素,重复之前的操作。
   具体过程如下:

二叉树之从上往下打印二叉树_第1张图片

   Java版本:

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> printList = new ArrayList<>();
        if(root == null) return printList;
        //使用链表模拟队列,入队:quene.add, 出队:quene.remove(0)
        LinkedList<TreeNode> quene  = new LinkedList();
        quene.add(root);//根节点入队
       
        
        while(!quene.isEmpty()){
        	TreeNode node = quene.pop();//弹出头节点,pop等同于remove(0)
        	printList.add(node.val);//打印节点
            //如果有子节点,依次加入quene中
        	if(node.left != null){
        		quene.add(node.left);
        	}
        	if(node.right != null){
        		quene.add(node.right);
        	}
        }
        
        return printList;
    }
}

你可能感兴趣的:(数据结构和算法,从上往下打印二叉树)