1.查找二叉树中想要的数据点(列name)
(1)前序遍历
bool FindBT(BTreeNode *BT , ElemType &name)
{
if(BT ==NULL) return false;
else
{
if( BT -> date==name)
{
name=BT ->date;
return true;
}
else
{
if(FindBT(BT ->LChild,name))
return true;
if(FindBT(BT ->Rchild,name))
return ture;
return false;
}
}
}
(2)中序遍历
bool FindBT(BTreeNode *BT , ElemType &name)
{
if(BT==NULL)
return false;
else
{
if(BT->LChild!=NULL)
FindBT(BT->LChild,name);
if(BT->date==name)
{
name=BT->date;
return true;
}
if(Ta->RChild!=NULL)
FindBT(BT->RChild,name);
}
}
后序遍历和上面的差不多,实际上,很多二叉树用前序遍历就可以实现了
2)清空二叉树
清空二叉树,是就是先删除根节点的左右孩子,用同样的方法在下个根节点处,删除其左右孩子,由此可见其实质是后序遍历二叉树。
void ClearBT(BTreeNode *BT)
{
if(BT!=NULL)
{
ClearBT(BT->LChild);
ClearBT(BT->RChild);
delete BT;
BT=NULL;
}
}
利用二叉树的后序遍历,可以很方便的实现其他运算,例如,统计二叉树的节点个数,求二叉树中所有的子叶节点等等,代码实现过程下次再给大家分享。