void Walk(WT_Inner node,
Func<WT_Inner, object> preorder,
Func<WT_Inner, object> inorder,
Func<WT_Inner, object> postorder)
{
if (node == null) {
return;
}
if (preorder != null) {
preorder (node);
}
this.Walk (node.Left as WT_Inner, preorder, inorder, postorder);
if (inorder != null) {
inorder (node);
}
this.Walk (node.Right as WT_Inner, preorder, inorder, postorder);
if (postorder != null) {
postorder (node);
}
}