I'm new to writing pseudo code. I otherwise code in C. While writing in C, I take special steps to check if pointers are null. Should I necessarily show it in pseudo code?
Here is my pseudo code of a function(and it's 2 helpers) that inserts a key into an AVL tree :
Insert_Element (Root , Key) node = Root if node is NULL //if node is uninitialized then node = New Node //initialize it node[key] = key node[parent] = NULL else while node is not NULL do parent_node = node if key < node[key] then node = node[left] else if key > node[key] node = node[right] else Raise_duplicate_key_error //raise an error saying that the key already exists done //location to insert the new key is now found node = New Node node[key] = key //set the key node[parent] = parent_node //link to the parent node if node[key] > parent_node[key] //decide where the new node should be (Right or Left ?) then parent_node[right] = node else parent_node[left] = node //Now to balance the tree while node is not NULL do node = node[parent] x = y y = z z = node[parent] if node[balanced] is false then break done if z is NULL //it means we couldn't find an imbalanced node the tree then return else if (x is not NULL and y is not NULL) and ((y[left] is x and z[right] is y) or (y[right] is x and z[left] is y)) //if it needs a double rotation ( right followed by left linkage or left followed by right linkage exists) then Rotate_Tree y x Rotate_Tree z y else Rotate_Tree z y //it just needs a single rotation end of Insert_Element //Given a parent and a child node, Rotate_Tree rotates the tree at parent //It makes child take the place of parent Rotate_Tree parent child if (parent is NULL) or (child is NULL) return if parent[right] is child then parent[right] = child[left] child[left][parent] = child child[parent] = parent[parent] if parent[parent][left] is parent then parent[parent][left] = child else if parent[parent][right] is parent then parent[parent][right] = child parent[parent] = child child[left] = parent if parent[left] is child then parent[left] = child[right] child[right][parent] = child child[parent] = parent[parent] if parent[parent][left] is parent then parent[parent][left] = child else if parent[parent][right] is parent then parent[parent][right] = child parent[parent] = child child[right] = parent end of Rotate_Tree Balanced node if difference between height(node[left]) and height(node[right]) <= 1 then return 1 else return 0 end of Balanced
Should I be checking if
New Node gave valid memory to the pointer?
Is the purpose of pseudo code just to give an idea of what the program does, logically?
Is mine strict enough?