0

Can anyone explain me the purpose of this line in splay tree function in c++

splay* Insert(int key, splay* root) { static splay* p_node = NULL; if (!p_node) p_node = New_Node(key); else p_node->key = key; if (!root) { root = p_node; p_node = NULL; //return root; } root = Splay(key, root); /* This is BST that, all keys <= root->key is in root->lchild, all keys > root->key is in root->rchild. */ if (key < root->key) { p_node->lchild = root->lchild; p_node->rchild = root; root->lchild = NULL; root = p_node; } else if (key > root->key) { //explain the line just below thus comment p_node->rchild = root->rchild; p_node->lchild = root; root->rchild = NULL; root = p_node; } else return root; p_node = NULL; return root; }

24th Nov 2018, 2:05 PM
Hamna
2 Answers
0
I think that the meaning is If root's key is smaller, make root as left child of newnode and copy the right child of root to newnode
26th Nov 2018, 11:04 AM
Prokopios Poulimenos
Prokopios Poulimenos - avatar
0
Read this article and try the implementation in playground to understand better... https://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/
28th Nov 2018, 7:00 AM
Prokopios Poulimenos
Prokopios Poulimenos - avatar