为了表示二叉树,定义两个类:TreeNode和Tree,其中TreeNode class是对结点信息的抽象,它包括结点的数据域和分别指向左子树和右子树的指针域;Tree class是对二叉树的抽象,一个二叉树由一个根结点确定,所以其成员变量为一个根结点指针,此外它也抽象了二叉树的各种操作,包括二叉树的遍历等。它的C++基本实现如下:
TreeNode class:
1 /* TreeNode.h */ 2 #ifndef TREENODE_H 3 #define TREENODE_H 4 5 templateclass Tree; 6 7 template 8 class TreeNode 9 {10 friend class Tree ;11 public:12 TreeNode()13 {14 leftChild = NULL;15 data = 0;16 rightChild = NULL;17 }18 private:19 TreeNode * leftChild;20 T data;21 TreeNode * rightChild;22 };23 24 #endif
Tree class:
1 /* Tree.h */ 2 #ifndef TREE_H 3 #define TREE_H 4 5 #include "TreeNode.h" 6 7 template8 class Tree 9 {10 public:11 Tree();12 bool isEmpty();13 void PreOrder(TreeNode * root);14 void MidOrder(TreeNode * root);15 void PostOrder(TreeNode * root);16 private:17 TreeNode * root;18 };19 20 #endif
在随后的章节中,为了使表达更直观更简洁,将TreeNode和Tree中的成员变量的属性设为了public。