二叉搜尋樹與雙向鍊錶

2021-08-18 08:45:38 字數 585 閱讀 9781

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

思路:先想一想最簡單的情況怎麼處理。即三個節點,根,左,右。這個時候應該先把根的left節點的right屬性指向根,然後把根的right節點的left屬性指向根,然後返回根的left節點。若根的left節點不是葉子節點,那麼則以這個節點開始,求其葉子節點,並把根節點的left指向其尾,其尾的right指向根。說起來很抽象,直接看**:

/**

public class treenode }*/

public

class

solution

return

null;

}public treenode gethead(treenode tree)else

temp.right = tree;

tree.left = temp;//並且找到這個左子樹形成雙向鍊錶的尾節點,然後和root相關聯}}

if(tree.right!=null)

return head;//返回head

}}

二叉搜尋樹與雙向鍊錶

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

二叉搜尋樹與雙向鍊錶

問題描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。演算法 struct binarytreenode binarytreenode convert binarytreenode prootoftree plastnodeinl...

二叉搜尋樹與雙向鍊錶

排序二叉樹與雙向鍊錶.cpp 定義控制台應用程式的入口點。題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 通過對一顆排序二叉樹的認識可知一顆排序二叉樹中序輸出就是有序的 通過後序遍歷讓子樹分別找到自己的left和rig...