Linked Binary Tree Structures
Node structure similar to linked list, but with two subtrees:
typedef struct treenode TreeNode;
struct treenode {
TreeEntry entry; /* user defined, includes key */
TreeNode *left; /* left subtree */
TreeNode *right; /* right subtree */
};
Pointer to tree declared as a pointer to a tree node:
TreeNode *root;
…
root = NULL; /* init to empty tree in CreateTree */
Traversal is simple using recursion (inorder, postorder similar):
void Preorder(TreeNode *subtree, void (*Visit)(TreeEntry *x))
{
if (subtree != NULL) { /* if not empty tree */
Visit(&subtree->entry); /* visit node first in preorder */
Preorder(subtree->left, Visit); /* then traverse left subtree */
Preorder(subtree->right, Visit); /* then traverse right subtree */
}
}