二叉搜索树的先序遍历序列是递增序列
设置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 };