We can do an inorder traversal as follows:
Code:Node GetNextLargest(Node* node) { if(NULL==node) return NULL; if(node->right) { node=node->right; if(node->left) node=(node->left); } if(node->parent) { if(node==node->parent->left) return (node->parent); else { while(node->parent) { if(node==node->parent->left) return node->parent; else node=node->parent; } } } return NULL; }
Code:void inorder(node *head,node *pointer){ int count=0; node*p; if(node!=NULL){ inorder(node->left); if(count==0){ p=node ; count++; } else{ if(p==pointer){ return node; } else p=node; inorder(node->right); } }
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks