Some error occured while loading page for you. Please try again.

You are viewing a single comment's thread. Return to all comments →

Thanks, that was really helpful. This is my C++ Solution

node * lca(node * root, int v1,int v2) { node *cur{root}; for (; cur->data > v1 && cur->data > v2; cur = cur->left); for (; cur->data > v1 && cur->data > v2; cur = cur->right); return cur; }

Took a second, but I get it. It only actually uses one of the loops. It also doesn't need to care how v1 and v2 are ordered.

No need to obfuscate it, though.

node * lca(node * root, int v1,int v2) { node *cur{root}; while (cur->data > v1 && cur->data > v2) cur = cur->left; while (cur->data > v1 && cur->data > v2) cur = cur->right; return cur; }

A bit confusing for this and I found a counter example.

I had a tree: 8 4 9 1 6 2 5 7 3

lca of 2 and 3 should be 2, but this logic return 1

8 / \ 4 9 / \ 1 6 / \ 3 2

This is your tree. The answer code runs fine.

Hi, shouldn't the tree be like this:

8 / \ 4 9 / \ 1 6 \ 2 \ 3

No, for a tree: 8 4 9 1 6 2 5 7 3. It should look like this: (forgiven me about my bad indentation)

8 / \ 4 9 / \ 1 6 \ / \ 2 5 7 \ 3

Tree flase

what if current->data>v1&¤t->data

This is wrong for the following input:

6 7 5 12 9 8 10 8 10

also wrong for below output 7 4 2 7 1 3 6 8 6 8

## Binary Search Tree : Lowest Common Ancestor

You are viewing a single comment's thread. Return to all comments →

Thanks, that was really helpful. This is my C++ Solution

Took a second, but I get it. It only actually uses one of the loops. It also doesn't need to care how v1 and v2 are ordered.

No need to obfuscate it, though.

A bit confusing for this and I found a counter example.

I had a tree: 8 4 9 1 6 2 5 7 3

lca of 2 and 3 should be 2, but this logic return 1

This is your tree. The answer code runs fine.

Hi, shouldn't the tree be like this:

No, for a tree: 8 4 9 1 6 2 5 7 3. It should look like this: (forgiven me about my bad indentation)

Tree flase

what if current->data>v1&¤t->data

This is wrong for the following input:

also wrong for below output 7 4 2 7 1 3 6 8 6 8