平衡二叉树----有序双向链表

 1 Node* pre = NULL,*cur = BULL;
 2 Node*  treeToDoubleyList(Node* root){//二叉搜索树中序遍历有序
 3 if(root == NULL)
 4 return NULL;
 5 Node* dummy = new Node;
 6 dummy->right = root;
 7 pre = dummy;
 8 __treeToDoublyList(root);
 9 dummy->right->left = cur;
10 cur->right = dummy->right;
11 return dummy->right;
12 }
13 void __treeDoublyList(Node* root){
14 if(root==NULL)
15 return ;
16 __treeDoublyList(root->left);
17 cur=root;
18 pre->right=cur;
19 cur->left=pre;
20 pre=root;
21 __treeDoublyList(root->right);
22 }

 

 // 创建一个 dummyHead 可以省略头节点相关的边界判断, dummyHead 指向头节点即可
/ dummyHead right 指向 head( 这里使用 left 也可以)
 // 对于 head 节点, head 的前一个节点就是 dummyHead 了。
中序遍历
 // 对于 head 节点, head 的前一个节点就是 dummyHead 了。
posted @ 2020-05-30 15:09  糖糖_彭  阅读(269)  评论(0编辑  收藏  举报