劍指offer 面試題36 二叉搜尋樹與雙向鍊錶

2021-10-02 15:17:29 字數 1473 閱讀 4691

中序遞迴,乙個pre節點記錄前乙個節點

/*

struct treenode

};*/

class

solution

func

(prootoftree)

;while

(prootoftree-

>left)

return prootoftree;

}void

func

(treenode* prootoftree)

convert

(prootoftree-

>left);if

(pre!=

nullptr

) pre=prootoftree;

convert

(prootoftree-

>right);}

};

中序迭代,乙個pre節點記錄前乙個節點

/*

struct treenode

};*/

class

solution

stack> sta;

treenode* cur=prootoftree;

while

(cur or

not sta.

empty()

)else

pre=cur;

cur=cur-

>right;}}

while

(prootoftree-

>left)

return prootoftree;}}

;

遞迴,func(root)將root為根的子樹轉化為雙向鍊錶,返回長度為2的vector,vec[0]為子樹鍊錶的頭,vec[1]為尾。

/*

struct treenode

};*/

class

solution

vector>

func

(treenode* root);}

auto vec_le=

func

(root-

>left)

;auto vec_ri=

func

(root-

>right);if

(vec_le[1]

!=nullptr)if

(vec_ri[0]

!=nullptr

) vector>

res(

2,root);if

(vec_le[0]

!=nullptr)if

(vec_ri[1]

!=nullptr

)return res;}}

;

劍指offer面試題36 二叉搜尋樹與雙向鍊錶

1.題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向 3.實現 一開始我想到的是 中序遍歷然後把節點依次用左右指標連起來即可,沒有象書中講的那麼麻煩的方法 不過書中的這種遞 歸的方法還是值得練習的 struct treenod...

劍指offer 面試題36 二叉搜尋樹與雙向鍊錶

輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立新的結點,只能調整樹中結點指標的指向。class binarytreenode 我們可以中序遍歷樹中的每乙個結點,這是因為中序遍歷演算法的特點是按照從小到大的順序遍歷二叉樹的每乙個結點。public class binarytr...

劍指offer 面試題36 二叉搜尋樹與雙向鍊錶

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。tips 使用遞迴,使用乙個指標的引用,來記錄轉換為鍊錶後的最後乙個元素 class solution treenode plast null cursiveconvert p...