将二叉查找树转换为有序的双向链表

来源:互联网 发布:山东省青岛市 阿里云 编辑:程序博客网 时间:2024/05/23 23:48

// pFirstNode:转换后双向链表的第一个节点的指针

// pLastNode:转换后双向链表的最后一个节点的指针

void Convert(BinaryTreeNode *pRoot, BinaryTreeNode *&pFirstNode, BinaryTreeNode *&pLastNode){BinaryTreeNode *pFirstLeft, *pLastLeft; // 左子树转化为双向链表后的第一个、最后一个节点的指针BinaryTreeNode *pFirstRight, *pLastRight; // 右子树转换为双向链表的第一个、最后一个节点的指针if (pRoot == NULL) {pFirstNode = NULL;pLastNode = NULL;}if (pRoot->lchild == NULL) {pFirstNode = pRoot;}else {Convert(pRoot->lchild, pFirstLeft, pLastLeft);pFirstNode = pFirstLeft;pLastLeft->rchild = pRoot;pRoot->lchild = pLastLeft;}if (pRoot->rchild == NULL) {pLastNode = pRoot;}else {Convert(pRoot->rchild, pFirstRight, pLastRight);pLastNode = pLastRight;pRoot->rchild = pFirstRight;pFirstRight->lchild = pRoot;}}

0 0
原创粉丝点击