LeetCode每日一题 之 二叉树的行数打印

image

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。算法地址

我感觉可以自己先做做,你说呢!!!!!!

解题思路

这道题明显是树的层序遍历问题,层序遍历需要使用队列辅助数据的遍历。
先看一个颗二叉树


典型二叉树

这颗树的层序遍历结果是,FCEADHGBM
我们使用队列,利用先进先出的特性,每次队头拿出一个结点,再往队尾插入这个结点的左右子元素。

举个栗子

模拟一下这个过程:
插入F
输出F,插入子节点CE
输出C,插入子节点AD
输出E,插入子节点HG
输出A,没有子节点,不插入
输出D,插入子节点B
输出H,没有子节点,不插入
输出G,插入子节点M
输出B,没有子节点,不插入
输出M,没有子节点,不插入
这样就完成了输出,FCEADHGBM

代码

public class Solution {
    public ArrayList PrintFromTopToBottom(TreeNode root) {
        //辅助的队列
         ArrayList a = new ArrayList<>();
         ArrayList result = new ArrayList<>();
        if(root == null){
            return result;
        }
        a.add(root);
        while(a.size() != 0){
            TreeNode node = a.get(0);
            if(node.left!=null){
                a.add(node.left);
            }
            if(node.right!=null){
                a.add(node.right);
            }
            result.add(node.val);
            a.remove(node);
        }
        return result;
    }
}

你可能感兴趣的:(LeetCode每日一题 之 二叉树的行数打印)