1. 程式人生 > >中序線索化二叉樹:遞迴實現

中序線索化二叉樹:遞迴實現

template<class T>

void ThreadBinaryTree<T>::InThread(ThreadBinaryTreeNode<T>* root,ThreadBinaryTreeNode<T>* &pre){

if(root==NULL)

return;

//中序線索化左子樹

InThread(root->leftchild(),pre);  //左路下降遞迴

if(root->leftchild()==NULL){

//建立前驅線索

root->left=pre;  //把pre變數內容賦給左邊線索

root->iTag=1;  //屬性設為線索屬性

}

if((pre))&&(pre->rightchild()==NULL)){

//建立後繼線索

pre->right=root;

pre->rTag=1;

}

pre=root;

InThread(root->rightchild(),pre);//中序線索化右子樹

}