首页 > 编程语言 > 详细

将二叉搜索树转换成排序的双向链表

时间:2015-05-20 15:05:51      阅读:250      评论:0      收藏:0      [点我收藏+]

分析:

1. 二叉树的中序遍历正好是排好序的遍历方式,因此可以采用中序递归的方式来处理;

2. 可以用类似输出流的方式来”输出“节点到链表末尾;

3. 可以用局部变量来简化判断,优化程序。


程序:

typedef struct tagTreeNode_s

{

    int nValue;

    tagTreeNode_s* pLeftNode;

    tagTreeNode_s* pRightNode;

} TreeNode_s;


void AppendNode(TreeNode_s* pNode, TreeNode_s*& pTailNode)

{

    if (pNode == NULL)

        return;


    pTailNode->pRightNode = pNode;

    pNode->pLeftNode = pTailNode;

    pTailNode = pNode;

}


void AppendTree(TreeNode_s* pRootNode, TreeNode_s*& pTailNode)

{

    if (pRootNode == NULL)

        return;


    AppendTree(pRootNode->pLeftNode, pTailNode);

    AppendNode(pRootNode, pTailNode);

    AppendTree(pRootNode->pRightNode, pTailNode);

}


TreeNode_s* ToLink(TreeNode_s* pRootNode)

{

    TreeNode_s HeadNode;

    TreeNode_s* pTailNode = &HeadNode;


    pTailNode->pRightNode = NULL;

    AppendTree(pRootNode, pTailNode);

    pTailNode->pRightNode = NULL;

    pTailNode = HeadNode->pRightNode;

    if (pTailNode != NULL)

        pTailNode->pLeftNode = NULL;


    return pTailNode;

}

本文出自 “愚者” 博客,请务必保留此出处http://roboter.blog.51cto.com/10249123/1653009

将二叉搜索树转换成排序的双向链表

原文:http://roboter.blog.51cto.com/10249123/1653009

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!