題目描述
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
思路1:遞迴、左中右的中序遍歷
head作為要返回的頭結點
首先問題是要得到一條鏈
那麼可以先得到左子樹的那條鏈
然後把這條鏈拼在當前結點左邊
然後再得到右子樹的那條鏈
然後再把右鏈拼在當前節點右邊
/*
struct treenode
};*/
class
solution
t->right = prootoftree;
prootoftree-
>left = t;
}//右,並把右拼接到中
treenode* r =
convert
(prootoftree-
>right);if
(r !=
null
)return head !=
null
? head : prootoftree;}}
;
思路2:遞迴、右中左的中序遍歷
借用乙個全域性變數head存放這條鏈的頭結點
先得到右子樹的那條鏈
再讓右鏈的頭結點拼到當前節點
再得到左子樹的那條鏈
這時奇妙的事情發生了,得左鏈這一步操作的時候,實際上就是不斷執行把右邊連到中間
於是return head就哦了
/*
struct treenode
};*/
class
solution
head = prootoftree;
//左convert
(prootoftree-
>left)
;return head;}}
;
二叉搜尋樹與雙向鍊錶
1.問題描述 輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。來自 劍指offer 2.分析 對於二叉搜尋樹我們知道,樹的左孩子都比根節點要下,樹的右孩子都比根結點要大,根據這個特點,我們進行中序遍歷得到的序列就會滿足題目的要求,我們...
二叉搜尋樹與雙向鍊錶
問題描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。演算法 struct binarytreenode binarytreenode convert binarytreenode prootoftree plastnodeinl...
二叉搜尋樹與雙向鍊錶
排序二叉樹與雙向鍊錶.cpp 定義控制台應用程式的入口點。題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 通過對一顆排序二叉樹的認識可知一顆排序二叉樹中序輸出就是有序的 通過後序遍歷讓子樹分別找到自己的left和rig...