【转】100题题1解——把二元查找树转变成排序的双向链表
2011-04-27 20:28
471 查看
参见原文:http://blog.csdn.net/proing/archive/2010/12/06/6058724.aspx
// Exereise.cpp #include "stdafx.h" #include <iostream> using namespace std; struct BSTreeNode { int m_nValue; // value of node BSTreeNode *m_pLeft; //leftchild ofnode BSTreeNode *m_pRight; // right child ofnode }; typedef BSTreeNode DoubleList; DoubleList *pHead = NULL; DoubleList *pDoubleList = NULL; // 创建二元查找树 void addBSTreeNode(BSTreeNode *& pCurrent, int value) { if(NULL == pCurrent) { BSTreeNode * pTree = new BSTreeNode(); pTree->m_pLeft = NULL; pTree->m_pRight = NULL; pTree->m_nValue = value; pCurrent = pTree; } else { if(value > pCurrent->m_nValue) { addBSTreeNode(pCurrent->m_pRight,value); } else if(value < pCurrent->m_nValue) { addBSTreeNode(pCurrent->m_pLeft,value); } else { cout<<"Input invalid,there already have the value!"<<endl; } } } // 二叉树转换成list void convertToDoubleList(BSTreeNode * pCurrent) { pCurrent->m_pLeft = pDoubleList; if (NULL == pDoubleList) { pHead = pCurrent; } else { pDoubleList->m_pRight =pCurrent; } pDoubleList = pCurrent; } // 遍历二元查找树 中序遍历根节点 void ergodicBSTree(BSTreeNode * pCurrent) { if(NULL == pCurrent) return; else { if(NULL != pCurrent->m_pLeft) ergodicBSTree(pCurrent->m_pLeft); convertToDoubleList(pCurrent); if(NULL != pCurrent->m_pRight) ergodicBSTree(pCurrent->m_pRight); } } int _tmain(int argc, _TCHAR* argv[]) { int value; BSTreeNode *pBSTree = NULL; cin>>value; while(-1 != value) { addBSTreeNode(pBSTree,value); cin>>value; } ergodicBSTree(pBSTree); while(pHead) { cout<<pHead->m_nValue<<endl; pHead = pHead->m_pRight; } return 0; }
相关文章推荐
- 微软100题-第一题把二元查找树转变成排序的双向链表
- 微软等数据结构+算法面试100题(43)-- 把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表——精选微软经典的算法面试100题中第一题
- 微软面试(1/100)---把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构
- To_10_r_100_0---把二元查找树转变成排序的双向链表
- 面试100题:1 把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- 算法面试100题——1、把二元查找树转变成排序的双向链表
- 微软100题(1) 二元查找树转变成排序的双向链表
- 面试100题:1.把二元查找树转变成排序的双向链表
- (微软100题)1.把二元查找树转变成排序的双向链表
- (微软100题)1.把二元查找树转变成排序的双向链表
- 程序员面试100题---1.把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表
- 100题_01 把二元查找树转变成排序的双向链表