呵呵,树虽然用的是firstChild-nextSibling的二叉链表,但是在你说的这两个问题里,除了在第一个孩子结点要涉及到firstChild指针域,其他只涉及到nextSibling。所以我说,完全就是个单链表的问题。
/////////////////////////////////////////////////////
//InsertChild()公有成员函数
//插入结点,值为value,作为current结点的最后一个子结点
/////////////////////////////////////////////////////
template<class T>
void Tree<T>::InsertChild(const T& value)
{
TreeNode<T>* newNode=new TreeNode<T>(value);
if(current->firstChild==NULL)
//如果没有子结点
current->firstChild=newNode;
else
{
TreeNode<T>* ptr=
//游标指针,指向第一个子结点
current->firstChild;
while(ptr->nextSibling!=NULL)
ptr=ptr->nextSibling;
ptr->nextSibling=newNode;
};
};
////////////////////////////////InsertChild()函数结束