Use an n-spaced queue for this. Whenever you find one, deque and enque,
findnth(node *root, queue q, int n, int number) { if(!root || !q) return; findnth(root->left, q, n, number); if(root->d == number) { if(q.size() < n) { nth ancestor not exist; print q->deq() as q.size() ance return; } else print q.deq() } if(q.size() < n) { q.ins(node->data); } else { q.deq();q.enq(node->data); } findnth(root->right, q, n, number); }
vikas
source share