
About the author
Mallikarjuna Mallisetty
General programming
Mallikarjuna shares practical programming tutorials and foundational concepts designed to help developers learn by building and experimenting.
View LinkedIn profile ↗#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = node->right = NULL;
return node;
}
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
TreeNode* current = root;
while (current != NULL) {
if (p->val < current->val && q->val < current->val) {
current = current->left;
} else if (p->val > current->val && q->val > current->val) {
current = current->right;
} else {
return current;
}
}
return NULL;
}
int main() {
TreeNode* root = createNode(6);
root->left = createNode(2);
root->right = createNode(8);
root->left->left = createNode(0);
root->left->right = createNode(4);
root->right->left = createNode(7);
root->right->right = createNode(9);
TreeNode* p = root->left;
TreeNode* q = root->left->right;
TreeNode* lca = lowestCommonAncestor(root, p, q);
printf("Lowest Common Ancestor: %d\n", lca->val);
return 0;
}