java 多叉树遍历_Leetcode刷题java之429. N叉树的层序遍历

执行结果:

通过

显示详情

执行用时 :8 ms, 在所有 Java 提交中击败了45.71% 的用户

内存消耗 :58.7 MB, 在所有 Java 提交中击败了41.12%的用户

题目:

给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

思路:

利用队列和当前队列大小来实现每一层的层次遍历,要灵活运用continue,跳过本次循环

代码:

/*

// Definition for a Node.

class Node {

public int val;

public Listchildren;

public Node() {}

public Node(int _val,List_children) {

val = _val;

children = _children;

}

};

*/

class Solution {

public List> levelOrder(Node root) {

List> result=new ArrayList<>();

Queuequeue=new LinkedList<>();

queue.add(root);

//每一次循环就是一层

while(queue.size()>0)

{

Listtemp=new ArrayList<>();

//获取这一层队列的大小

int count=queue.size();

//将这一行队列循环完

while(count-->0)

{

Node node=queue.poll();

//如果当前节点为空,就跳过本次循环

if(node==null)

{

continue;

}

//将此结点加入

temp.add(node.val);

//再将下面的加入队列

for(Node n:node.children)

{

queue.add(n);

}

}

//这个地方最开始的时候没有发现这个问题

//如果不加这个判断会出现问题,输入[],预期[],但是输出确实[[]]

//所以要加这个循环

if(temp.size()>0)

{

result.add(temp);

}

}

return result;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值