Binary Tree Traversal
Binary Tree Traversal
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
};
newNode->val = val;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
if (root == nullptr) {
return;
inorderRecursive(root->left);
inorderRecursive(root->right);
}
if (root == nullptr) {
return;
preorderRecursive(root->left);
preorderRecursive(root->right);
if (root == nullptr) {
return;
postorderRecursive(root->left);
postorderRecursive(root->right);
struct StackNode {
TreeNode* node;
StackNode* next;
};
newNode->node = node;
newNode->next = *top;
*top = newNode;
if (*top == nullptr) {
return nullptr;
*top = (*top)->next;
delete temp;
return poppedNode;
push(&stackTop, current);
current = current->left;
current = pop(&stackTop);
current = current->right;
if (root == nullptr) {
return;
push(&stackTop, root);
while (!isEmpty(stackTop)) {
if (node->right != nullptr) {
push(&stackTop, node->right);
if (node->left != nullptr) {
push(&stackTop, node->left);
if (root == nullptr) {
return;
push(&s1Top, root);
while (!isEmpty(s1Top)) {
push(&s2Top, node);
if (node->left != nullptr) {
push(&s1Top, node->left);
if (node->right != nullptr) {
push(&s1Top, node->right);
}
while (!isEmpty(s2Top)) {
struct QueueNode {
TreeNode* node;
QueueNode* next;
};
// Function to enqueue
newNode->node = node;
newNode->next = nullptr;
if (*rear == nullptr) {
*front = newNode;
*rear = newNode;
} else {
(*rear)->next = newNode;
*rear = newNode;
}
// Function to dequeue
if (*front == nullptr) {
return nullptr;
*front = (*front)->next;
if (*front == nullptr) {
delete temp;
return dequeuedNode;
if (root == nullptr) {
return;
if (current->left != nullptr) {
if (current->right != nullptr) {
TreeNode* createSampleTree() {
root->left = createTreeNode(2);
root->right = createTreeNode(3);
root->left->left = createTreeNode(4);
root->left->right = createTreeNode(5);
return root;
deleteTree(root->left);
deleteTree(root->right);
delete root;
int main() {
inorderRecursive(root);
inorderIterative(root);
preorderRecursive(root);
preorderIterative(root);
postorderRecursive(root);
levelOrderIterative(root);
return 0;