From 0f0cce62f8afd1ec72d04190a05a719950ecc434 Mon Sep 17 00:00:00 2001 From: Brighu-Raina <72229896+Brighu-Raina@users.noreply.github.com> Date: Fri, 2 Oct 2020 02:36:46 +0530 Subject: [PATCH] Update 107_BinaryTree_Level_Order_traversal_ii --- 107_BinaryTree_Level_Order_traversal_ii | 36 +++++++++++++++---------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/107_BinaryTree_Level_Order_traversal_ii b/107_BinaryTree_Level_Order_traversal_ii index 61a4163..94aaf5f 100644 --- a/107_BinaryTree_Level_Order_traversal_ii +++ b/107_BinaryTree_Level_Order_traversal_ii @@ -4,23 +4,31 @@ Detailed video explanation can be found here: https://youtu.be/FSWqYp3k1O4 C++ --- vector> levelOrderBottom(TreeNode* root) { + if(root== nullptr) + return {}; vector> result; - if(!root) return result; - queue Q; - Q.push(root); - while(!Q.empty()){ - int n = Q.size(); - vector nodes(n); - for(int i = 0; i < n; ++i){ - TreeNode* node = Q.front(); - nodes[i] = node->val; - Q.pop(); - if(node->left) Q.push(node->left); - if(node->right) Q.push(node->right); + vector v1; + int size; + queue q1; + q1.push(root); + while(!q1.empty()) + { + size=q1.size(); + TreeNode* current; + for(int i=0;i<=size-1;i++) + { + current=q1.front(); + v1.push_back(current->val); + q1.pop(); + if(current->left!=nullptr) + q1.push(current->left); + if(current->right!=nullptr) + q1.push(current->right); } - result.push_back(nodes); + result.push_back(v1); + v1.clear(); } - reverse(result.begin(), result.end()); + reverse(result.begin(),result.end()); return result; }