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
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
: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
left; TreeNode
this->left = NULL; this->right = NULL; } TreeNode(T& data,TreeNode
TreeNode
right; } virtual ~TreeNode() { // cout << “node (”<
destory!”<<endl; // to do } T& getData() { return data; } void setData(T&
data) { this->data = data; } TreeNode
setLeft(TreeNode
return right; } void setRight(TreeNode
#endif