From 6e1740600998c24340db00f7efb9e88e109afa47 Mon Sep 17 00:00:00 2001 From: Pallavi Dhakne <85501739+pallavidhakne@users.noreply.github.com> Date: Tue, 6 Sep 2022 05:22:07 +0530 Subject: [PATCH] Update binary-tree-preorder-traversal.cpp the tc:100% faster and the sc:41.82% this solution is better than previous solution --- C++/binary-tree-preorder-traversal.cpp | 60 +++++--------------------- 1 file changed, 11 insertions(+), 49 deletions(-) diff --git a/C++/binary-tree-preorder-traversal.cpp b/C++/binary-tree-preorder-traversal.cpp index 007fbab11a..e421127ac9 100644 --- a/C++/binary-tree-preorder-traversal.cpp +++ b/C++/binary-tree-preorder-traversal.cpp @@ -10,57 +10,19 @@ * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ -class Solution { -public: - vector preorderTraversal(TreeNode* root) { - vector res; - auto *curr = root; - while (curr) { - if (!curr->left) { - res.emplace_back(curr->val); - curr = curr->right; - } else { - auto *node = curr->left; - while (node->right && node->right != curr) { - node = node->right; - } - if (!node->right) { - res.emplace_back(curr->val); - node->right = curr; - curr = curr->left; - } else { - node->right = nullptr; - curr = curr->right; - } - } +void traverse(TreeNode* root,vector &temp){ + if(root==NULL){ + return; } - return res; - } -}; - -// Time: O(n) -// Space: O(h) -class Solution2 { + temp.push_back(root->val); + traverse(root->left,temp); + traverse(root->right,temp); +} +class Solution { public: vector preorderTraversal(TreeNode* root) { - vector res; - stack> s; - s.emplace(root, false); - while (!s.empty()) { - bool visited; - tie(root, visited) = s.top(); - s.pop(); - if (root == nullptr) { - continue; - } - if (visited) { - res.emplace_back(root->val); - } else { - s.emplace(root->right, false); - s.emplace(root->left, false); - s.emplace(root, true); - } - } - return res; + vector ans; + traverse(root,ans); + return ans; } };