二叉樹應用 二叉搜尋樹與雙向鍊錶

2021-08-20 17:40:01 字數 433 閱讀 6078

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

分析:由於要求轉換之後的鍊錶是排好序的,我們採用中序遍歷,遍歷樹中的每乙個節點。根節點、左子樹和右子樹。在把左、右子樹都轉換成雙向鍊錶之後再和根節點連線起來,整顆二叉樹就轉換成了排序好的雙向鍊錶。

實現如下:

/*

struct treenode

};*/

//每次遇到乙個節點就會接入雙向鍊錶,所以要更新雙向鍊錶最後乙個節點的值,因此,這裡引數用treenode**

void convertnode(treenode*pnode,treenode**plastnodeinlist)

treenode* convert(treenode*root)

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

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。這道題太難了,我不會做t t,直接引入參 吧。coding utf 8 class treenode def init self,x self.val x self.left ...

二叉搜尋樹與雙向鍊錶

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

二叉搜尋樹與雙向鍊錶

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