LeetCodeブラッシングノート_102。バイナリツリートラバーサル

トピックは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);
}

おすすめ

転載: blog.csdn.net/weixin_42249196/article/details/108507570