這是一個二叉樹的中序遍歷,當執行第一個判斷以后得到了最左側的值,也就是根,保存以后判斷右邊是否有值,有的話再次呼叫,如果左邊沒有值右邊沒有值不就停止了嗎?后來的值是怎么遍歷出來的呢?
這個演算法沒想通,請求大佬指點迷津。
uj5u.com熱心網友回復:
你是不是對遞回有什么誤解?如果左邊有,繼續遞回遍歷左邊(這就是第一個if)
不滿足上面的if,或者上面的if遍歷結束后,就遍歷當前節點,也就是兩句if中間的那句賦值陳述句
然后如果右邊有,就繼續遞回遍歷右子樹(也就是第二個if)
所以,對于你的問題,左右都沒有的時候,就只執行中間那一句(對于第一次回圈,如果左右都沒有,就只執行中間那一句,那就是2;如果左邊有就會先遞回遍歷1,對于1的遞回淶說,它左右都沒有,就只執行中間的陳述句,中間的陳述句就是1自己)
你自己畫個圖一步一步把程式執行的中間結果畫出來就清楚了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249218.html
標籤:Java SE
