資料結構--二叉樹--輸出樹中從根到每個葉子節點的路徑(樹遍歷演算法的應用) .
阿新 • • 發佈:2019-01-01
void AllPath(Bitree T, Stack &S)//輸出二叉樹上從根到所有葉子結點的路徑
{
if(T)
{
Push(S,T->data);
if(!T->Left&&!T->Right)//如果左指標和右指標同時為空,才說明該節點為葉子節點
PrintStack(S);
else
{
AllPath(T->Left,S);
AllPath(T->Right,S);
}
Pop(S);
}
}
而樹組成的二叉連結串列,只要節點的左指標為空,就說明該節點為葉子節點。其實右指標在實際的樹中為其兄弟節點,已經為空了,如下圖所示,紅色為實際的樹,藍色為樹轉成的二叉連結串列。
void OutPath(Bitree T, Stack &S)//輸出森林從根到所有葉子結點的路徑
{
while(!T)
{//要輸出從根到葉子節點的路徑,實質上輸出從根節點開始往左加上左子樹根到葉子節點的路徑。
Push(S,T->data);
if(!T->lchild)//
Printstack(S);
else
OutPath(T->lchild,S);
Pop(S);
T=T->rchild;//T一直往右走
}
}