1.把二元查找树转变成排序的双向链表
2011-10-04 13:47
471 查看
参照了别人的代码,自己写一遍,好好理解下
View Code
View Code
#include <iostream> using namespace std; struct BSTreeNode { BSTreeNode *m_pLeft; BSTreeNode *m_pRight; int m_Value; }; BSTreeNode *phead; BSTreeNode *pnext; void converttoDoubleList(BSTreeNode *pCurrent) //结点链表化 { pCurrent->m_pLeft = pnext; if(NULL==pnext) { phead=pCurrent; } else { pnext->m_pRight = pCurrent; } pnext = pCurrent; cout<<pCurrent->m_Value<<endl; } //加入结点,建立二元查找树 void AddNodeToTree(BSTreeNode * &pCurrent,int value) { if(NULL==pCurrent) { BSTreeNode *pTree = new BSTreeNode(); pTree->m_pLeft = NULL; pTree->m_pRight = NULL; pTree->m_Value = value; pCurrent = pTree; } else if(pCurrent->m_Value > value ) { AddNodeToTree(pCurrent->m_pLeft,value); } else if(pCurrent->m_Value < value ) { AddNodeToTree(pCurrent->m_pRight,value); } } //中序遍历二元查找树 void InOrderTraverse(BSTreeNode *pCurrent) { if(NULL==pCurrent) { return ; } if(NULL!=pCurrent->m_pLeft) { InOrderTraverse(pCurrent->m_pLeft); } converttoDoubleList(pCurrent); //左子树遍历完后,对该指针链表化 if(NULL!=pCurrent->m_pRight) { InOrderTraverse(pCurrent->m_pRight); } } int main() { BSTreeNode *pstart = NULL; phead = pnext = NULL; AddNodeToTree(pstart,10); AddNodeToTree(pstart,16); AddNodeToTree(pstart,14); AddNodeToTree(pstart,12); AddNodeToTree(pstart,4); AddNodeToTree(pstart,8); AddNodeToTree(pstart,6); InOrderTraverse(pstart); return 0; }
相关文章推荐
- 把二元查找树转变成排序的双向链表(树)
- 微软面试100之1 把二元查找树转变成排序的双向链表(树)
- 关于把二元查找树转变成排序的双向链表(树)的C语言设计程序执行后出现段错误的问题
- 剑指offer系列-T27把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表
- 《程序员面试题精选》01.二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表(微软面试)
- 二元查找树转变成排序的双向链表(树)
- 【微软100题】001把二元查找树转变成排序的双向链表(树)
- 把二元查找树转变成排序的双向链表(树)
- 把二元查找树转变成排序的双向链表(微软面试题)
- 把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表—python实现
- 1. 微软面试题:把二元查找树转变成排序的双向链表(树)
- 把二元查找树转变成排序的双向链表(JULY微软面试100题系列第一题)的算法思考
- No1、把二元查找树转变成排序的双向链表(树)
- 算法题22 把二元查找树转变成排序的双向链表(中序遍历)
- 把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表(中序遍历)
- 面试题系列-----数据结构(把二元查找树转变成排序的双向链表(树))