樹(shù)與每日一題
2023-03-31 18:39 作者:不要學(xué)經(jīng)管 | 我要投稿
今天學(xué)習(xí)了樹(shù)的遍歷,對(duì)于中序遍歷函數(shù),它能夠輸出表達(dá)式的完全括號(hào)表達(dá)式形式,即:
由于是我自用的,就不寫(xiě)buildParseTree()的具體代碼了,總之,它是一個(gè)將字符串轉(zhuǎn)化為二叉樹(shù)的函數(shù)。上述代碼的輸出為:'((3)+((4)*(5)))'
現(xiàn)在,我學(xué)習(xí)的教材中提出了如何將數(shù)字外面的括號(hào)刪掉,即最后的輸出形式應(yīng)該是:'(3+(4*5))',因?yàn)樗鼈兪菦](méi)必要的,正好今天就拿此作為練手題,經(jīng)過(guò)我們?nèi)四X去“跑”一下代碼后,我們可以發(fā)現(xiàn),只需要加一段判斷的代碼來(lái)確定父節(jié)點(diǎn)是否為數(shù)字,如果是的話,就不需要+括號(hào),具體代碼如下:
判斷方法有兩種,一種是判定它的子節(jié)點(diǎn)是否都是None,另一種是判斷這個(gè)父節(jié)點(diǎn)的值是否為數(shù)字,我比較喜歡第二種,因?yàn)橹睋糁黝}??傊?,很簡(jiǎn)單,最后的輸出為:'(3+(4*5))'。
然后,又進(jìn)行了每日一題:

看到這道題的第一反應(yīng)就是轉(zhuǎn)換為2進(jìn)制,然后利用棧儲(chǔ)存每次除2的余數(shù),具體代碼如下:
可能不是最優(yōu)的方法,但有意識(shí)地使用學(xué)到了的數(shù)據(jù)結(jié)構(gòu)也是一種進(jìn)步。
標(biāo)簽: