From 31bb10c02b159e86904aebe9b8c5cfaff2353d8e Mon Sep 17 00:00:00 2001 From: Techmonite <150219021+Starlaps-365@users.noreply.github.com> Date: Thu, 25 Jul 2024 21:21:12 +0200 Subject: [PATCH] Update 102. Binary Tree Level Order Traversal - BFS.cpp Given the root of a binary tree, return the level order traversal of its nodes' values. The level order traversal should be from left to right, level by level. Therefore to perform a level order traversal of a binary tree, we can utilize a queue to keep track of nodes at each level. We start by pushing the root node into the queue. Then, we iterate through the queue, processing nodes level by level. --- ...inary Tree Level Order Traversal - BFS.cpp | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/102. Binary Tree Level Order Traversal - BFS.cpp b/102. Binary Tree Level Order Traversal - BFS.cpp index 6460f13..71d0028 100644 --- a/102. Binary Tree Level Order Traversal - BFS.cpp +++ b/102. Binary Tree Level Order Traversal - BFS.cpp @@ -1,3 +1,6 @@ +#include +#include + /** * Definition for a binary tree node. * struct TreeNode { @@ -10,33 +13,28 @@ class Solution { public: vector> levelOrder(TreeNode* root) { - vector> res; - vector level; - if(!root) return res; - int curLevelCnt = 1, nextLevelCnt = 0, visitedCnt = 0; + vector> result; + if (!root) return result; + queue q; q.push(root); - while(!q.empty()){ - TreeNode *cur = q.front(); - q.pop(); - visitedCnt++; - level.push_back(cur->val); - if(cur->left){ - nextLevelCnt++; - q.push(cur->left); - } - if(cur->right){ - nextLevelCnt++; - q.push(cur->right); - } - if(curLevelCnt == visitedCnt){ - res.push_back(level); - level.clear(); - curLevelCnt = nextLevelCnt; - nextLevelCnt = 0; - visitedCnt = 0; + + while (!q.empty()) { + int levelSize = q.size(); + vector levelNodes; + + for (int i = 0; i < levelSize; ++i) { + TreeNode* node = q.front(); + q.pop(); + levelNodes.push_back(node->val); + + if (node->left) q.push(node->left); + if (node->right) q.push(node->right); } + + result.push_back(levelNodes); } - return res; + + return result; } };