題目:輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
思路:二叉搜尋樹左小右大,中序遍歷。當前結點左結點連線左子樹最大值,左子樹最大值右結點連線當前節點,以當前結點為最大值,以右子樹和最大值遞迴。
#include
using namespace std;
struct binarytreenode ;
void transform(binarytreenode *root, binarytreenode **plastnodeinlist)
}binarytreenode *convert(binarytreenode *proot)
binarytreenode *create()
return
null;
}int main()
cout << endl;
return
0;}
劍指offer 面試題27 二叉搜尋樹與雙向鍊錶
題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新節點,只能調整樹中結點指標的指向。最後輸出排序後雙向鍊錶。基本思想 二叉樹中每個節點都有兩個指向子節點的指標。在雙向鍊錶中,每個節點也有兩個指標,分別指向前乙個節點和後乙個節點。二叉搜尋樹中,左子節點的值總是小於父節...
劍指Offer 面試題27 二叉搜尋樹與雙向鍊錶
題面 劍指offer p151 牛客網 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。如 如果不考慮箭頭,可以看到4 6 8 10 12 14 16是樹的中序遍歷 因此可以借用中序遍歷的方法進行修改 struct treenode ...
劍指Offer面試題27 二叉搜尋樹與雙向鍊錶
題目描述 輸入一課二叉搜尋樹,將該二叉樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。比如,輸入圖中的二叉搜尋樹,則輸出轉換之後的雙向鍊錶 從中我們可以發現雙向鍊錶中的結點順序和二叉搜尋樹的中序遍歷得到的序列順序是一樣的。我們可以使用遞迴和非遞迴兩種方式實現這道題的...