首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

简单的bitree遍历有关问题

2012-08-16 
简单的bitree遍历问题CLinkedBitree.hC/C++ code#pragma once#include iostreamusing namespace stdcla

简单的bitree遍历问题
CLinkedBitree.h

C/C++ code
#pragma once#include <iostream>using namespace std;class CLinkedBitree;class CNode{    friend class CLinkedBitree;public:    CNode(int n = 0, CNode* l = NULL, CNode* r = NULL) : nData(n), pLeft(l), pRight(r) {}private:    int nData;    CNode* pLeft;    CNode* pRight;};class CLinkedBitree{public:    CLinkedBitree(int n = 0) : pRoot(NULL), nEnd(n) {}    ~CLinkedBitree() {DestroyTree(pRoot);}    void BuildTree(CNode* pCurrent);    void DestroyTree(CNode* pCurrent);    void InOrder(CNode* pCurrent) const;    CNode* GetRoot() const {return pRoot;}private:    CNode* pRoot;    int nEnd;};

CLinkedBitree.cpp
C/C++ code
#include "CLinkedBitree.h"void CLinkedBitree::BuildTree(CNode* pCurrent){    int nItem;    cin>>nItem;    if(nItem != nEnd)    {        pCurrent = new CNode(nItem);        BuildTree(pCurrent->pLeft);        BuildTree(pCurrent->pRight);    }}void CLinkedBitree::DestroyTree(CNode* pCurrent){    if(pCurrent != NULL)    {        DestroyTree(pCurrent->pLeft);        DestroyTree(pCurrent->pRight);        delete pCurrent;    }}void CLinkedBitree::InOrder(CNode* pCurrent) const{    if(pCurrent != NULL)    {                InOrder(pCurrent->pLeft);        cout<<pCurrent->nData;        InOrder(pCurrent->pRight);    }}
main.cpp
C/C++ code
#include <iostream>#include "CLinkedBitree.h"using namespace std;int main(){    CLinkedBitree bitree;    bitree.BuildTree(bitree.GetRoot());    bitree.InOrder(bitree.GetRoot());    return 0;}


小弟水平有限,这InOrder函数貌似没执行。。没有输出。。程序如有其他问题也欢迎指出。。谢谢

[解决办法]
你的问题是指针再buildtree函数那地方运用错了。导致你的空间分配给了其他的地址,而root没有获得正确的空间。参考下我的代码吧。http://blog.csdn.net/w170532934/article/details/7089656

热点排行