"Preorder traversal without Morris algorithm" #include #include using namespace std;
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };
class Solution { public: vector preorderTraversal(TreeNode* root) { vector result; helper(root, result); return result; }
private: void helper(TreeNode* node, vector& res) { if (node == nullptr) return; // 1. Visit root res.push_back(node->val); // 2. Left subtree helper(node->left, res); // 3. Right subtree helper(node->right, res); } };
int main() {
// Tree banaate hain: example ke liye simple tree
// 1
// /
// 2 3
// /
// 4 5
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
Solution sol;
vector<int> preorder = sol.preorderTraversal(root);
cout << "Preorder Traversal: ";
for (int v : preorder) {
cout << v << " ";
}
cout << endl;
// Memory clean up (simple)
delete root->left->right;
delete root->left->left;
delete root->left;
delete root->right;
delete root;
return 0;
}