刷題筆記 二叉樹與雙向鍊錶(C )

2021-10-02 03:04:42 字數 614 閱讀 2737

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

前面有道也是關於的二叉搜尋樹的筆記提到搜尋二叉樹的特點

左子樹的數值小於根節點,右子樹的數值大於根節點

二叉搜尋樹的子樹也是二叉搜尋樹

根據上述的特點和所需要的有序結果,採取中序遍歷的方式來遍歷該二叉搜尋樹,便會得到乙個有序的雙向鍊錶

按中序遍歷完之後指標會知道鍊錶中的最後乙個結點,而需要返回表頭,所以需要找到頭結點

/*

struct treenode

};*/

class solution

return pheadoflist;

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

*plastnodeinlist=pcurrent;

//遞迴右子樹

if(pcurrent->right!=null)}};

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

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

刷演算法 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。如果是這樣一棵二叉搜尋樹 那麼它對應的雙向鍊錶順序為 1 3 4 5 7 10 11 15 複製 仔細觀察發現這個序列和樹的中序遍歷是一樣的,所以演算法就好寫了,先中序遍歷得到乙個序列,...

二叉樹轉雙向鍊錶

include using namespace std 樹節點 struct node typedef struct node link 構造樹 void insert tree link h,int t if h val t insert tree h left,t else insert tre...