怎樣把二叉搜尋樹轉化成排序雙向鍊錶?

2021-09-28 14:10:52 字數 1243 閱讀 5185

一:首先介紹二叉搜尋樹;

概念:二叉搜尋樹是指在一顆二叉樹上,這顆二叉樹上的每個節點都有:所有左節點 < 該節點 < 所有右節點; 例如下樹

二:根據搜尋二叉樹特性分析

因為二叉樹的實現也是靠指標實現的,所以其資料結構和雙向鍊錶的結構是相同的;若把箭頭話上,就變成了這樣子。

注:紅色代表指向空

所以根據特性,我們只需要將每個節點左邊的節點均放在其左邊;把每個節點右邊的節點均放在其右邊,這樣就可以拍好序了。

三:**

首先我們需要設定乙個索引,防止丟失;我們在這裡設定乙個索引位prev = null;

第一步:用root拿到最左邊的數(即最小的數),用root指向prev

第二步:訪問其右子樹位空,讓prev = root 並將root返回到12

第三步:讓prev->left 指向讓root->right->prev,

如此遞迴下去,就可以完成了;

四:**

class solution 

_convrt(root->left,prev);

root->left = *prev;

if(*prev)

*prev = root;

_convrt(root->right,prev);

}treenode* convert(treenode* prootoftree)

treenode *prev = null;

_convrt(prootoftree, &prev);

treenode *head = prootoftree;

while(head && head->left)

return head;}};

把二叉搜尋樹轉化成更大的樹

definition of treenode class treenode def init self,val self.val val self.left,self.right none,none class solution param root the root of binary tree ...

把二叉搜尋樹轉化成更大的樹

definition of treenode class treenode def init self,val self.val val self.left,self.right none,none class solution param root the root of binary tree ...

二叉搜尋樹轉化成雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。其中乙個測試用例 按層序遍歷輸入 對應輸出應該為 from left to right are 4,6,8,10,12,14,16 from right to left are 16,1...