26 二叉搜尋樹與雙向鍊錶

2021-08-21 05:18:39 字數 527 閱讀 7830

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

思路:二叉搜尋樹的特點是左子樹的值小於等於根結點,右子樹的值大於等於根結點;每個節點都有指向左子結點的指標和指向右子結點的指標;雙向鍊錶結點的結構:pprev data pnext pprev指向前乙個結點,pnext指向後乙個結點;如:乙個雙向鍊錶有3個結點: p0 a0 p1, p1 a2 p2,p2 a3 p3,p0是頭指標,p3指向null;結點a0指向後乙個結點的指標與結點a1指向前乙個結點的指標是相同的;本題不能建立新的指標,又因為左子結點的值小於等於根結點的值小於等於右子結點的值,所以可以中序遍歷二叉樹,讓指向左子結點的指標當pprev,指向右子結點的指標當pnext;

/*

struct treenode

};*/

class solution

void convert(treenode* root, treenode* &plast)

};

26 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 二叉搜尋樹的中序遍歷是從小到大排序的。所以得利用中序遍歷,將左指標指向前乙個元素,右指標指向下乙個元素。所以需要遞迴裡需要有乙個變數表示前乙個節點。注意,需要用指標的指標,否則值傳...

26 二叉搜尋樹與雙向鍊錶

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

26 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。python class treenode def init self,x self.val x self.left none self.right none param prootof...