简单的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); }}- 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