#include <stdio.h>
#include <stdlib.h>
// Define a node structure
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// Function to create a new node
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// Function to insert nodes (for simplicity, as a Binary Search Tree)
struct Node* insertNode(struct Node* root, int data) {
if (root == NULL) {
return createNode(data);
}
if (data < root->data) {
root->left = insertNode(root->left, data);
} else {
root->right = insertNode(root->right, data);
}
return root;
}
// Inorder Traversal (Left, Root, Right)
void inorderTraversal(struct Node* root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
}
// Preorder Traversal (Root, Left, Right)
void preorderTraversal(struct Node* root) {
if (root != NULL) {
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
// Postorder Traversal (Left, Right, Root)
void postorderTraversal(struct Node* root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->data);
}
}
// Main function to demonstrate binary tree
int main() {
struct Node* root = NULL;
int values[] = {50, 30, 20, 40, 70, 60, 80};
int n = sizeof(values) / sizeof(values[0]);
// Insert nodes
for (int i = 0; i < n; i++) {
root = insertNode(root, values[i]);
}
// Display traversals
printf("Inorder Traversal: ");
inorderTraversal(root);
printf("\n");
printf("Preorder Traversal: ");
preorderTraversal(root);
printf("\n");
printf("Postorder Traversal: ");
postorderTraversal(root);
printf("\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIERlZmluZSBhIG5vZGUgc3RydWN0dXJlCnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IE5vZGUqIGxlZnQ7CiAgICBzdHJ1Y3QgTm9kZSogcmlnaHQ7Cn07CgovLyBGdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgbm9kZQpzdHJ1Y3QgTm9kZSogY3JlYXRlTm9kZShpbnQgZGF0YSkgewogICAgc3RydWN0IE5vZGUqIG5ld05vZGUgPSAoc3RydWN0IE5vZGUqKW1hbGxvYyhzaXplb2Yoc3RydWN0IE5vZGUpKTsKICAgIG5ld05vZGUtPmRhdGEgPSBkYXRhOwogICAgbmV3Tm9kZS0+bGVmdCA9IE5VTEw7CiAgICBuZXdOb2RlLT5yaWdodCA9IE5VTEw7CiAgICByZXR1cm4gbmV3Tm9kZTsKfQoKLy8gRnVuY3Rpb24gdG8gaW5zZXJ0IG5vZGVzIChmb3Igc2ltcGxpY2l0eSwgYXMgYSBCaW5hcnkgU2VhcmNoIFRyZWUpCnN0cnVjdCBOb2RlKiBpbnNlcnROb2RlKHN0cnVjdCBOb2RlKiByb290LCBpbnQgZGF0YSkgewogICAgaWYgKHJvb3QgPT0gTlVMTCkgewogICAgICAgIHJldHVybiBjcmVhdGVOb2RlKGRhdGEpOwogICAgfQoKICAgIGlmIChkYXRhIDwgcm9vdC0+ZGF0YSkgewogICAgICAgIHJvb3QtPmxlZnQgPSBpbnNlcnROb2RlKHJvb3QtPmxlZnQsIGRhdGEpOwogICAgfSBlbHNlIHsKICAgICAgICByb290LT5yaWdodCA9IGluc2VydE5vZGUocm9vdC0+cmlnaHQsIGRhdGEpOwogICAgfQoKICAgIHJldHVybiByb290Owp9CgovLyBJbm9yZGVyIFRyYXZlcnNhbCAoTGVmdCwgUm9vdCwgUmlnaHQpCnZvaWQgaW5vcmRlclRyYXZlcnNhbChzdHJ1Y3QgTm9kZSogcm9vdCkgewogICAgaWYgKHJvb3QgIT0gTlVMTCkgewogICAgICAgIGlub3JkZXJUcmF2ZXJzYWwocm9vdC0+bGVmdCk7CiAgICAgICAgcHJpbnRmKCIlZCAiLCByb290LT5kYXRhKTsKICAgICAgICBpbm9yZGVyVHJhdmVyc2FsKHJvb3QtPnJpZ2h0KTsKICAgIH0KfQoKLy8gUHJlb3JkZXIgVHJhdmVyc2FsIChSb290LCBMZWZ0LCBSaWdodCkKdm9pZCBwcmVvcmRlclRyYXZlcnNhbChzdHJ1Y3QgTm9kZSogcm9vdCkgewogICAgaWYgKHJvb3QgIT0gTlVMTCkgewogICAgICAgIHByaW50ZigiJWQgIiwgcm9vdC0+ZGF0YSk7CiAgICAgICAgcHJlb3JkZXJUcmF2ZXJzYWwocm9vdC0+bGVmdCk7CiAgICAgICAgcHJlb3JkZXJUcmF2ZXJzYWwocm9vdC0+cmlnaHQpOwogICAgfQp9CgovLyBQb3N0b3JkZXIgVHJhdmVyc2FsIChMZWZ0LCBSaWdodCwgUm9vdCkKdm9pZCBwb3N0b3JkZXJUcmF2ZXJzYWwoc3RydWN0IE5vZGUqIHJvb3QpIHsKICAgIGlmIChyb290ICE9IE5VTEwpIHsKICAgICAgICBwb3N0b3JkZXJUcmF2ZXJzYWwocm9vdC0+bGVmdCk7CiAgICAgICAgcG9zdG9yZGVyVHJhdmVyc2FsKHJvb3QtPnJpZ2h0KTsKICAgICAgICBwcmludGYoIiVkICIsIHJvb3QtPmRhdGEpOwogICAgfQp9CgovLyBNYWluIGZ1bmN0aW9uIHRvIGRlbW9uc3RyYXRlIGJpbmFyeSB0cmVlCmludCBtYWluKCkgewogICAgc3RydWN0IE5vZGUqIHJvb3QgPSBOVUxMOwogICAgaW50IHZhbHVlc1tdID0gezUwLCAzMCwgMjAsIDQwLCA3MCwgNjAsIDgwfTsKICAgIGludCBuID0gc2l6ZW9mKHZhbHVlcykgLyBzaXplb2YodmFsdWVzWzBdKTsKCiAgICAvLyBJbnNlcnQgbm9kZXMKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcm9vdCA9IGluc2VydE5vZGUocm9vdCwgdmFsdWVzW2ldKTsKICAgIH0KCiAgICAvLyBEaXNwbGF5IHRyYXZlcnNhbHMKICAgIHByaW50ZigiSW5vcmRlciBUcmF2ZXJzYWw6ICIpOwogICAgaW5vcmRlclRyYXZlcnNhbChyb290KTsKICAgIHByaW50ZigiXG4iKTsKCiAgICBwcmludGYoIlByZW9yZGVyIFRyYXZlcnNhbDogIik7CiAgICBwcmVvcmRlclRyYXZlcnNhbChyb290KTsKICAgIHByaW50ZigiXG4iKTsKCiAgICBwcmludGYoIlBvc3RvcmRlciBUcmF2ZXJzYWw6ICIpOwogICAgcG9zdG9yZGVyVHJhdmVyc2FsKHJvb3QpOwogICAgcHJpbnRmKCJcbiIpOwoKICAgIHJldHVybiAwOwp9Cgo=