把BST轉換為雙向連結串列
給出一棵BST,將其轉換為雙向連結串列,left儲存前節點,right儲存後節點。
例如:
4
/ \
1 7
/ \ / \
0 2 5 8
\ \ \
3 6 9
變為:0<->1<->2<->3<->4<->5<->6<->7<->8<->9.
思路:在visit函式中返回該節點的最左葉子節點,最右葉子結點。
struct Node
{
int val;
Node *left;
Node *right;
Node(int v) : val(v), left(NULL), right(NULL){}
};
void visit(Node *root, Node **left, Node **right)
{
if (root == NULL)
{
*left = NULL;
*right = NULL;
return;
}
if (root->left)
{
Node *p = NULL;
Node *q = NULL;
visit(root->left, &p, &q);
root->left = q;
q->right = root;
*left = p;
}
else
{
*left = root;
}
if (root->right)
{
Node *p = NULL;
Node *q = NULL;
visit(root->right, &p, &q);
root->right = p;
p->left = root;
*right = q;
}
else
{
*right = root;
}
}
Node* fun(Node *root)
{
if (root == NULL)
{
return NULL;
}
Node *left = NULL;
Node *right = NULL;
visit(root, &left, &right);
return left;
}
相關文章
- 將二叉排序樹BST轉換成排序的雙向連結串列排序
- 連結串列-雙向連結串列
- 雙向連結串列
- javascript中的連結串列結構—雙向連結串列JavaScript
- 【連結串列問題】打卡10:將搜尋二叉樹轉換成雙向連結串列二叉樹
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 實現雙向連結串列
- Hash連結串列轉換為紅黑樹,和樹轉換為連結串列的條件
- 資料結構——雙向連結串列資料結構
- 資料結構:雙向連結串列資料結構
- JAVA基礎:語言中連結串列和雙向連結串列的實現(轉)Java
- Python演算法練習--把搜尋樹轉成雙向連結串列Python演算法
- 結構與演算法(03):單向連結串列和雙向連結串列演算法
- Go實現雙向連結串列Go
- java實現雙向連結串列Java
- C語言之雙向連結串列C語言
- 微軟面試題,將二叉排序樹轉換成雙向連結串列微軟面試題排序
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構之雙向連結串列資料結構
- 資料結構學習(C++)——雙向連結串列 (轉)資料結構C++
- Java雙向連結串列的實現Java
- DoublyLinkedList(雙向連結串列)——Javascript版JavaScript
- 雙向連結串列 尾節點插入
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 畫江湖之資料結構【第一話:連結串列】雙向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 雙向連結串列資料結構
- C++實現通用雙向連結串列C++
- 雙向連結串列的建立及基本操作
- 雙向連結串列的功能實現(初版
- 【c# .net】雙向連結串列( LinkedList )C#
- Linux 核心資料結構:雙向連結串列Linux資料結構
- 雙向連結串列————查詢、刪除、插入結點
- 資料結構(雙向連結串列的實現)資料結構
- LVGL雙向連結串列學習筆記筆記
- 雙向連結串列的操作(插入和刪除)
- 雙向連結串列介面設計(C語言)C語言
- 資料結構-雙向連結串列(Python實現)資料結構Python
- MYSQL INNODB 中通用雙向連結串列的實現MySql