Binary Search Trees Solutions |
Document last modified: |
Question
Iterative version
| Node Tree_Successor (preserves Node x ) if
x.right ≠
NIL |
Tail recursive
| Node Tree_Successor ( Node x ) if x.right ≠ NIL return Tree_Minimum( x.right ) return Parent_Successor( x ) -- Successor is direct ancestor |
Node Parent_Successor ( Node x )
return Parent_Successor( y ) |
| int Tree_Nodes ( Node T ) if T = NIL return 0 return 1 + Tree_Nodes ( T.left ) + Tree_Nodes ( T.right ) |

| int Tree_Leaves ( Node T ) if T = NIL return 0 if T.left = NIL and T.right = NIL return 1 return Tree_Leaves ( T.left ) + Tree_Leaves ( T.right ) |
| int Tree_Height ( Node T ) if T = NIL return -1 return max( Tree_Height ( T.left ), Tree_Height ( T.right ) ) + 1 |