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

2021-09-14 02:37:54 字數 802 閱讀 9011

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

/*解題思路:類似於遞迴的中序遍歷

1.將左子樹構造成雙鏈表,並返回煉表頭節點。

2.定位至左子樹雙鏈表最後乙個節點。

3.如果左子樹煉表不為空的話,將當前prootoftree追加到左子樹鍊錶。

4.將右子樹構造成雙鏈表,並返回煉表頭節點。

5.如果右子樹煉表不為空的話,將該鍊錶追加到prootoftree節點之後。

6.根據左子樹鍊錶是否為空確定返回的節點。

*/public class solution

// 3.如果左子樹煉表不為空的話,建立根節點root與左子樹最右結點p的雙向連線

//將當前root追加到p的右邊,root左節點指向p

if(left!=null)

// 4.將右子樹構造成雙鏈表,並返回煉表頭節點

treenode right = convert(prootoftree.right);

// 5.如果右子樹煉表不為空的話,將該鍊錶追加到prootoftree節點之後

if(right!=null)

return left!=null?left:prootoftree;//返回的是頭節點,是left最終指向的那個點

//左子樹煉表不為空則返回left,否則為空的話,頭節點就是root。}}

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

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 將二叉搜尋樹convert為雙向鍊錶,嘗試遞迴解決。遞迴關係 當訪問到節點root時,root left與轉換後的左子樹鍊錶完成互指,root right與轉換後的右子樹鍊錶完成互...

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

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。分析 遞迴 struct treenode class solution if prootoftree left null prootoftree right null 1 將...

劍指Offer(26) 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。二叉搜尋樹的特點 左結點的值 根結點的值 右結點的值,所以二叉搜尋樹中序遍歷的序列,就是排序的順序。根據排序雙向鍊錶的定義,根結點將和它的左子樹的最大乙個結點鏈結起來,同時它還將和它右子...