トピックはLeetCodeからです
[102.バイナリツリーのレベル順トラバーサル](https://leetcode-cn.com/problems/binary-tree-level-order-traversal
他のソリューションまたはソースコードにアクセスできます:tongji4m3
解説
バイナリツリーを取得し、それを順番にたどって得られたノード値を返してください。(つまり、左から右に、レイヤーごとにすべてのノードにアクセスします)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
アイデア
再帰のアイデア:ルートノードから再帰的に開始し、高さは0です。初めて特定のフロアに入るとき、新しいスペースを開き、同じフロアに入り、彼の高さに応じて直接参加する
コード
private List<List<Integer>> result = new LinkedList<>();
public List<List<Integer>> levelOrder(TreeNode root)
{
recursive(root, 0);
return result;
}
private void recursive(TreeNode node, int height)
{
if(node==null)
{
return;
}
//最多就是等于,不会大于,因为每层不满足都会构建
if(height==result.size())
{
result.add(new LinkedList<>());
}
result.get(height).add(node.val);
recursive(node.left,height+1);
recursive(node.right,height+1);
}