牛客網 二叉搜尋樹與雙向鍊錶

2021-08-29 00:00:23 字數 724 閱讀 7699

附上題目連線

題目描述

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只能調整樹中結點指標的指向。

這道題有點意思,有助於理解遞迴,其實不用遞迴應該比較好點,用個佇列

就夠了。

說下我的思路,用個pre指標來記錄中序遍歷中結點的前驅結點,再用ppre

儲存在每個遞迴函式裡,不然單乙個pre弄不了,同時要使用node.right

進行第二次遍歷時,有得注意node.right可能被改變,所以用乙個變數儲存以下

遍歷完後就是結點的操作了,注意要判斷ppre是node的左結點還是右節點,判斷

val即可,如果要以node.leftppre或者node.rightppre為條件會出錯,比如ppre是

node的左結點的右節點之類的情況。

接下來貼**吧

package 劍指offer;

/** * created by administrator on 2018/10/10.

*/public class 二叉搜尋樹與雙向鍊錶

inorder(prootoftree);

return ret;

}private void inorder(treenode node)

if(node.val>ppre.val)else

}}

牛客網 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。解題思路 1.將左子樹構造成雙鏈表,並返回煉表頭節點。2.定位至左子樹雙鏈表最後乙個節點。3.如果左子樹煉表不為空的話,將當前root追加到左子樹鍊錶。4.將右子樹構造成雙鏈表,並返回煉...

牛客網劍指offer 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。struct treenode class solution private dfs,用兩個指標的引用來返回子樹連線後的頭和尾,然後左子樹的尾和右子樹的頭與根節點連線,再將左子樹的頭和右...

牛客解題思路 二叉搜尋樹與雙向鍊錶

思路 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。首先,只要提到是二叉搜尋樹,那麼一定會涉及到中序遍歷,那麼這一題我們只需要進行一遍中序遍歷即可,在遍歷的過程中將當前節點和上乙個節點進行雙向的鏈結 指向 即可。由於我們需要返回鍊錶...