[剑指offer][Java]从上往下打印二叉树

2019-06-23  本文已影响0人  Maxinxx

题目

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

程序核心思想

原来想用递归做,但是发现递归一下就到最底层了,不能实现层级遍历。所以想到用队列,队列里面存放的是树的节点,出一个结点就添加进去它的左孩子和右孩子,这样就能实现层级遍历了。

Tips

代码

import java.util.ArrayList;
import java.util.Queue;
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) {
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        ArrayList<Integer> array = new ArrayList<Integer>();
        if(root == null)    return array;

        queue.offer(root);
        while(queue.isEmpty() == false){
            TreeNode node = (TreeNode)queue.poll();
            if(node.left != null)    queue.offer(node.left);
            if(node.right != null)    queue.offer(node.right);
            array.add(node.val);
        }
        return array;
    }
}
上一篇下一篇

猜你喜欢

热点阅读