問題:打印二叉樹的所有從根節(jié)點到葉子節(jié)點的路徑试读。
思路:使用遞歸分別遍歷左子樹,然后遍歷右子樹草则,使用棧來存儲路徑上的每一個節(jié)點病涨,到達(dá)葉子節(jié)點時候打印路徑各個節(jié)點的data骡澈。然后碴卧,出棧推盛,也就是回到上一層画株,繼續(xù)遍歷右子樹沮协。
void path3(Tree* root)
{
if(root == NULL)
{
return;
}
stack[top++] = root->data;
if(root->lch == NULL && root->rch == NULL)
{
for(int i = 0 ;i<top;i++)
{
printf("%c",stack[i]);
}
printf("\n");
return;
}
if(root->lch)
{
path3(root->lch);
top--;
}
if(root->rch)
{
path3(root->rch);
top--;
}