題目:輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的節點,只能調整樹中節點的指向。
分析:由於要求轉換之後的鍊錶是排好序的,我們採用中序遍歷,遍歷樹中的每乙個節點。根節點、左子樹和右子樹。在把左、右子樹都轉換成雙向鍊錶之後再和根節點連線起來,整顆二叉樹就轉換成了排序好的雙向鍊錶。
實現如下:
/*
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...