Tell me more ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

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?

share|improve this question

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.