編寫對二叉樹進(jìn)行中序遍歷的非遞歸算法,并對算法執(zhí)行如圖所示的二叉樹的情況進(jìn)行跟蹤(即給出各階段棧的變化及輸出的結(jié)點(diǎn)序列)。 棧已經(jīng)定義:InitStack(S)(初始化)、Empty(S)(判??眨?、Push(S,p)(入棧)、Pop(S,p)(出棧)等操作。
己知中序線索二叉樹采用二叉鏈表存儲結(jié)構(gòu),鏈結(jié)點(diǎn)的構(gòu)造為: 其中若ltag為0,則lchild指向結(jié)點(diǎn)的前驅(qū),否則lchild指向左孩子結(jié)點(diǎn);若rtag為0,則rchild指向結(jié)點(diǎn)的后繼,否則rchild指向右孩子結(jié)點(diǎn)。下面的算法返回x所指結(jié)點(diǎn)的直接后繼結(jié)點(diǎn)的位置。若該算法有錯,則請改正錯誤;若無錯,請寫“正確”二字。