劍指 Offer 36 二叉搜尋樹與雙向鍊錶

2021-10-08 09:56:19 字數 505 閱讀 1118

劍指 offer 36. 二叉搜尋樹與雙向鍊錶 - 力扣(leetcode)

與leetcode 426相同。

題意就是將二叉樹中的left,right指標改為雙向鍊錶中的前驅,後繼指標。

既然是二叉搜尋樹,雙向鍊錶又要求順序,那肯定就是使用中序遍歷了,遍歷的過程中一邊遍歷一邊調整指標指向,最後將頭尾相連即可。

如果可以借助外部空間,那中序遍歷將節點匯入陣列,再依次連線是最簡單的,或者使用迭代法借助棧也可以。

不借助外部空間,遞迴,煉表頭結點應為二叉樹的最小值(最左邊的節點):

class solution else

if(root->right) inorder(root->right);

}node* treetodoublylist(node* root)

};

劍指Offer 36 二叉搜尋樹與雙向鍊錶

20.5.4 將 二叉搜尋樹 轉換成乙個 排序的迴圈雙向鍊錶 其中包含三個要素 排序鍊錶 節點應從小到大排序,因此應使用中序遍歷 從小到大 訪問樹的節點 雙向鍊錶 在構建相鄰節點 設前驅節點 pre 當前節點 cur 關係時,不僅應 pre.right cur,也應 cur.left pre 迴圈鍊...

《劍指offer》 36二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 public class treenode public class solution 右子樹轉換後,返回頭結點,連線在根節點右側 treenode rightnode conve...

劍指offer 36 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的迴圈雙向鍊錶。要求不能建立任何新的節點,只能調整樹中節點指標的指向。為了讓您更好地理解問題,以下面的二叉搜尋樹為例 我們希望將這個二叉搜尋樹轉化為雙向迴圈鍊錶。鍊錶中的每個節點都有乙個前驅和後繼指標。對於雙向迴圈鍊錶,第乙個節點的前驅是最後乙個節點,...