/** * 102. Binary Tree Level Order Traversal * https://leetcode.com/problems/binary-tree-level-order-traversal/description/ * * Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example: Given binary tree [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 return its level order traversal as: [ [3], [9,20], [15,7] ] * */ class TreeNode(var `val`: Int) { val left: TreeNode? = null val right: TreeNode? = null } class Solution { fun levelOrder(root: TreeNode?): List<List<Int>> { val result = mutableListOf<List<Int>>() if (root == null) return result val stack = mutableListOf<TreeNode>() stack.add(root) while (stack.isNotEmpty()) { val oneLevel = mutableListOf<Int>() var size = stack.size while (size > 0) { //below 2 lines do as pop val node = stack.get(0) stack.removeAt(0) size-- oneLevel.add(node.`val`) if (node.left != null) stack.add(node.left) if (node.right != null) stack.add(node.right) } result.add(oneLevel) } return result } }