美文网首页Android进阶之路Android开发经验谈Android开发
LeetCode每日一题 之 二叉树的行数打印

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

作者: ZSACH | 来源:发表于2020-04-21 13:13 被阅读0次
    image

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

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

    解题思路

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


    典型二叉树

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

    举个栗子🌰

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

    代码

    public class Solution {
        public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
            //辅助的队列
             ArrayList<TreeNode> a = new ArrayList<>();
             ArrayList<Integer> 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每日一题 之 二叉树的行数打印

        本文链接:https://www.haomeiwen.com/subject/zxjuihtx.html