Solutions for those exercises.
Exercises
-
Consider the following tree:
-
Explain why it is not a binary search tree.
-
Pick one among inorder, preorder and postorder traversal, and give
-
A brief description of how it proceeds,
-
What it would produce for the given tree.
-
-
-
Consider the following implementation of “random” binary trees:
public class RBTree<T> { private class Node { public T Data { get; set; } public Node left; public Node right; public Node( T dataP = default(T), Node leftP = null, Node rightP = null ) { Data = dataP; left = leftP; right = rightP; } } private Node root; public RBTree() { root = null; } public void Insert(T dataP) { root = Insert(dataP, root); } private Node Insert(T dataP, Node nodeP) { if (nodeP == null) { return new Node(dataP, null, null); } else { Random gen = new Random(); if(gen.NextDouble() > 0.5) { nodeP.left = Insert(dataP, nodeP.left); } else { nodeP.right = Insert(dataP, nodeP.right); } } return nodeP; } }
Note that the
Insert(T dataP, Node nodeP)
method uses thegen.NextDouble() > 0.5
test that will be randomlytrue
half of the time, andfalse
the other half.-
Explain the
T dataP = default(T)
part of theNode
constructor. -
Write a
ToString
method for theNode
class, remembering that only a nodeData
needs to be part of thestring
returned. -
Write a series of statements that would
- create a
RBTree
object, - insert the values 1, 2, 3, and 4 in it (in this order).
- create a
-
Make a drawing of a possible
RBTree
obtained by executing your code. -
Write a
Find
method that takes one argumentdataP
of typeT
and returnstrue
ifdataP
is in theRBtree
calling object,false
otherwise.
-