將二叉搜尋樹轉換為雙向鍊錶

2021-07-11 10:35:22 字數 844 閱讀 5588

題目描述

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

好悲傷,面試微軟的時候被遇到這個題,知道大體思路,但是最終**沒寫好,由此可見平常學東西不紮實。總是淺嘗輒止。

思路:使用中序遍歷,儲存已經建好的雙向鍊錶的最後乙個節點。那麼處理當前節點的時候就很簡單了,即把最後乙個節點的右指標指向當前節點,當前節點的左指標指向最後乙個節點。

**如下:

package com.company;

import com.intellij.ui.groupedelementsrenderer;

/** * created by founder on 2016/4/25.

*/public

class

solution

makelist(prootoftree);

treenode head = prootoftree;

while(head.left!=null)

return head;

}public

void

makelist(treenode root)

makelist(root.left);

//如果不是null,進行修改操作,如果是null,則不需要做什麼

if(lastsorted!=null)

lastsorted = root;

makelist(root.right);

}public

static

void

main(string argv)

}}

將二叉搜尋樹轉換為雙向鍊錶

二叉搜尋樹的定義 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹。題目描述 輸入一棵二叉搜尋樹,將其轉換為排序的雙向鍊錶,要求是不能建立任何新的節點,只能調整樹中節點指標的指向。public...

將二叉搜尋樹轉換為排序雙向鍊錶

題目描述 有乙個搜尋二叉樹,對於樹中的任意乙個節點,其左子樹的所有值小於該節點的值,而其右子樹的所有值大於該節點的值。要求 在不定義任何新的節點情況下,將該二叉樹轉換成為乙個排序雙向鍊錶。假設有上面的二叉樹,那麼其轉換為雙向鍊錶後的順序應該為 2 3 4 5 6 7 8 對於煉表頭節點 其直接前驅為...

二叉搜尋樹轉換為有序雙向鍊錶

一 問題描述 輸入一棵二叉搜尋樹,現在要將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。而且在轉換的過程中,不能建立任何新的結點,只能調整樹中的結點指標的指向來實現。二 實現思路 在二叉搜尋樹中,每個結點都有兩個分別指向其左 右子樹的指標,左子樹結點的值總是小於父結點的值,右子樹結點的值總是大於父結點的值。...