给你一段小程序互相交流,这是在我平衡二叉树算法中的一个函数,由于程序较长所以省略:
struct TreeNode{
int nodedata;
TreeNode* father;
//父结点指针
TreeNode* left; //左子树指针
TreeNode* right; //右子树指针
TreeNode()
{
father=left=right=NULL;
}
};
///////////////////////////////////
struct LinkNode{
LinkNode* NextNode;
TreeNode* current;
LinkNode()
{
NextNode=NULL;
current=NULL;
}
};
//////////////////后序遍历二叉树并输出遍历顺序链表(采用递归算法)/////////
void ThroughTree(TreeNode* p_head,LinkNode* &LinkHead)
//p_head为二叉树的根结点指针(输入),LinkHead为链表头指针引用由调用者传入。
{
if(p_head!=NULL)
{
if(p_head->left!=NULL) ThroughTree(p_head->left,LinkHead);
if(p_head->right!=NULL) ThroughTree(p_head->right,LinkHead);
if(LinkHead==NULL) {LinkHead=new LinkNode;LinkHead->current=p_head;LinkHead->NextNode=NULL;}
else {LinkNode* temp,*LinkTail;
for(temp=LinkHead;temp->NextNode!=NULL;temp=temp->NextNode) ; //寻找LinkHead队列中的尾节点
LinkTail=temp;temp=new LinkNode;
temp->NextNode=NULL;temp->current=p_head;LinkTail->NextNode=temp;} //else
}//if
}