1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
class { public: int val; Node * left; Node * right; Node(){val = 0;left = NULL; right = NULL;} };
Node * process(Node * head) { if( head == NULL ) return NULL; Node * l = process(head->left); Node * r = process(head->right); if( l && r ) { head->left = l; head->right = r->right; r->right->left = head; r->right = l->right; l->right = head; return r; } else if( l ) { head->left = l; head->right = l->right; l->right = head; return head; } else if( r ) { head->left = NULL; head->right = r->right; r->right = head; return r; } else { head->right = head; head->left = NULL; return head; } }
Node * tree2list(Node * head) { if( head == NULL ) return NULL; Node *last = process(head); head = last->right; last->right = NULL; return head; }
|
近期评论