Mid Coding

Level-order traversal but return values in reverse order?

List<List<int>> LevelOrderBottom(TreeNode root) {

var res = new List<List<int>>();

if (root == null) return res;

Queue<TreeNode> queue = new Queue<TreeNode>();

queue.Enqueue(root);

while (queue.Count > 0) {

int size = queue.Count;

var level = new List<int>();

Follow on:

for (int i = 0; i < size; i++) {

TreeNode node = queue.Dequeue();

level.Add(node.val);

if (node.left != null) queue.Enqueue(node.left);

if (node.right != null) queue.Enqueue(node.right);

res.Insert(0, level); // prepend to get reverse order

return res;

Explanation:

Perform normal BFS, insert each level at front of result list for reversed order.

More from C# Programming Tutorial

All questions for this course