码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-20 15:07:25      阅读:116      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!