http://blog.csdn.net/wangyangkobe/article/details/6756700
编写一个递归算法,利用叶子结点中空的 右连接指针域rchild,将所有叶子结点自左向右链接成一个单链表,算法返回最左叶子结点的地址(链头)。
//有一个关键点我没有想到,就是node始终记录的是单链表的最后一个元素
void link(Node * root, Node * &node) {
if (root-left == NULL && root->right == NULL) {
node->right = root;
node = node ->right;
return;
}
if (root->left != NULL)
link(root->left,node);
if (root->right != NULL)
link(root->right,node);
}
Node * tree2leaf(Node *root) {
if (root == NULL)
return NULL;
Node head;
link(root, head);
return head->right;
}