find NEXT in BST
/***
4.6
Write an algorithm to find "next" node (in-order successor) of a given node in BST. You may assume each node has a link to its parent.
***/
#include<iostream>
using namespace std;
struct node {
int val;
node *left;
node *right;
node *parent;
};
node* getNext(node* given){
node* next;
if(given->left == nullptr || given->right == nullptr) {
if(given->parent->left == given) {
next = given->parent;
} else {
while (given->parent->right == given || given->parent != nullptr)
{
next = given->parent;
}
next = given->parent;
}
} else {
next = given->right;
while(next->left != nullptr) {
next = next->left;
}
}
return next;
}
Comments
Post a Comment