levelOrderTraversal<T> function

List<List<T>> levelOrderTraversal<T>(
  1. BinaryTreeNode<T>? root
)

Implementation

List<List<T>> levelOrderTraversal<T>(BinaryTreeNode<T>? root) {
  final List<List<T>> result = [];

  if (root == null) return result;

  final List<BinaryTreeNode<T>> queue = [root];

  while (queue.isNotEmpty) {
    final int levelSize = queue.length;
    final List<T> currentLevel = [];

    for (int i = 0; i < levelSize; i++) {
      final BinaryTreeNode<T> node = queue.removeAt(0);
      currentLevel.add(node.value);

      if (node.left != null) {
        queue.add(node.left!);
      }
      if (node.right != null) {
        queue.add(node.right!);
      }
    }

    result.add(currentLevel);
  }

  return result;
}