1. 程式人生 > 其它 >劍指offer 36. 二叉搜尋樹與雙向連結串列

劍指offer 36. 二叉搜尋樹與雙向連結串列

二叉搜尋樹的先序遍歷序列是遞增序列
設定pre指標來記錄上一次訪問結果

1
/* 2 // Definition for a Node. 3 class Node { 4 public: 5 int val; 6 Node* left; 7 Node* right; 8 9 Node() {} 10 11 Node(int _val) { 12 val = _val; 13 left = NULL; 14 right = NULL; 15 } 16 17 Node(int _val, Node* _left, Node* _right) {
18 val = _val; 19 left = _left; 20 right = _right; 21 } 22 }; 23 */ 24 class Solution { 25 private: 26 Node * pre ; 27 Node * head; 28 Node * last ; 29 30 public: 31 Node* treeToDoublyList(Node* root) { 32 if(root ==NULL) 33 return NULL;
34 pre = NULL; 35 head = NULL; 36 last =NULL; 37 visit(root); 38 head->left = pre; 39 pre->right = head; 40 return head; 41 42 43 } 44 void visit(Node* root) 45 { 46 if(root == NULL) 47 return; 48 visit(root->left);
49 if(head == NULL) 50 { 51 head = root; 52 pre = root; 53 } 54 else 55 { 56 pre->right = root; 57 root->left = pre; 58 pre = root; 59 } 60 visit(root->right); 61 } 62 };