将二叉树的叶子结点转换成单链表,并返回最左叶子结点的地址(链头)

来源:互联网 发布:杭州乐其网络年终奖 编辑:程序博客网 时间:2024/04/30 03:31

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;}