GeneralTreeNode 一般树形结构节点类

写这个类是配合GeneralTree这个类的。

这个类使用TreeNode基类继承而来。这里有一点要说明的。为了编程的方便,这里TreeNode中的成员属性均设置为Public

当然,如果有需求一遍写为protected。当然我这里是为了自娱自乐…所以没有在意太多。

TreeNode头文件详见 http://blog.csdn.net/cctt_1/archive/2008/08/19/2794469.aspx

这个Node其实是二叉树的一种变形形式。它含有一个父指针,和一个孩子个数计数器。

#ifndef GENERALTREENODE_H #define GENERALTREENODE_H #include “TreeNode.h”
template class GeneralTreeNode : public TreeNode { public : int
childLength; // how many children does the node have GeneralTreeNode*
parent;// the parent point of the node public: GeneralTreeNode(T &
data):TreeNode(data) { childLength = 0; parent = NULL; } GeneralTreeNode(T&
data, TreeNode* left, TreeNode* right, TreeNode* parent)
:TreeNode(data,left,right) { childLength = 0; parent = parent; }
GeneralTreeNode(GeneralTreeNode* a):TreeNode(a->data,a->left,a->right) {
childLength = a->childLength; parent = a->parent; } // to print the data
virtual void Print(void (*print)(T& data)) { print(data); } virtual
~GeneralTreeNode() { childLength = 0; parent = NULL; } };

查找它的各个孩子的任务交给了GeneralTree类来做,它的职能就是记录孩子节点的个数,并快速的查找到它的父节点可能上面那个网页的TreeNode.h文件
由于以前是直接贴代码到CSDN上,所以可能现在不适合拷贝。

所以将TreeNode.h的代码在贴到下方:

/* * create by chico chen * date: 2009/02/02 / #ifndef TREENODE_H #define
TREENODE_H template class TreeNode { public: T data; TreeNode *
left; TreeNode * right; public: TreeNode(T& data) { this->data = data;
this->left = NULL; this->right = NULL; } TreeNode(T& data,TreeNode
left,
TreeNode* right) { this->data = data; this->left = left; this->right =
right; } virtual ~TreeNode() { // cout << “node (”<data<<“)
destory!”<<endl; // to do } T& getData() { return data; } void setData(T&
data) { this->data = data; } TreeNode * getLeft() { return left; } void
setLeft(TreeNode * left) { this->left = left; } TreeNode * getRight() {
return right; } void setRight(TreeNode* right) { this->right = right; } };
#endif