1. 程式人生 > >重建二叉樹 (劍指offer第六題)

重建二叉樹 (劍指offer第六題)

題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。

有思路,但是沒寫出來。還得多練練。

解釋一下大神的幾個關鍵點:

建立左子樹時:startPre+i-startIn

其中i-startIn表示的是有幾個左孩子。

建立右子樹時:i-startIn+startPre+1

其中i-startIn同上。+1代表的是根。前序遍歷去掉左孩子和根就是右孩子開始算的地方。

大神的思路簡潔。這個程式碼風格值得學習。加油。

最後還有個問題,留著以後解決: TreeNode root=new TreeNode(pre[startPre]);

搞不懂為什麼這句會在eclipse中報錯,但在牛客測試中沒報錯。