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

Popular posts from this blog

Sudoku

Longest prefix matching - trie

Climbing Stairs