36 二叉搜尋樹與雙向鍊錶

2021-10-02 13:31:23 字數 649 閱讀 2812

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

public

class

treenode

}

很明顯該題考察的是樹的中序遍歷演算法,即用遞迴和非遞迴分別實現。**如下:

//遞迴的中序遍歷演算法

treenode lastnode=null;

treenode realhead=null;

public treenode inorderconvert

(treenode root)

else

inorderconvert

(root.right)

;return realhead;

}//非遞迴的中序遍歷演算法

public treenode convert

(treenode prootoftree)if(

!stack.

empty()

)}while

(prootoftree!=null&&prootoftree.left!=null)

return prootoftree;

}

36 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。解析 這道題一開始看答案都無法理解,後來終於弄懂了 就是將二叉樹的left和right轉化為鍊錶節點的左右指標,因為是按照從小到大順序所以就得是中序遍歷,得到每個節點,然後就是對節點進行...

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

題目描述輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的 結點,只能調整樹中結點指標的指向。思路 需要注意,last 在函式裡,用的是 指標的指標。如果不這樣做,會報錯 自己對指標這部分理解的也不是很深,這部分以後還要再好好看看 struct treenode cla...

二叉搜尋樹與雙向鍊錶

1.問題描述 輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。來自 劍指offer 2.分析 對於二叉搜尋樹我們知道,樹的左孩子都比根節點要下,樹的右孩子都比根結點要大,根據這個特點,我們進行中序遍歷得到的序列就會滿足題目的要求,我們...