1 回答

TA貢獻(xiàn)22條經(jīng)驗(yàn) 獲得超7個(gè)贊
1、如果想改變指針?biāo)赶虻膬?nèi)容,采用單重指針就行了,就是普通的真正
2、如果想改變指針?biāo)赶虻牡刂?,則需要采用雙重指針?BTnode** T,_creat(m_root,i,ch,c);如果想改變m_root的指向,所以要使用雙重指針,傳入&m_roor;
修改后代碼:遍歷出的內(nèi)容是否正確我沒有做檢查
#include<iostream>
using namespace std;
struct BTnode
{
int data;
BTnode *Lchild,*Rchild;
};
class Tree
{
private:
BTnode *m_root;
public:
Tree();
~Tree();
void creat(int *ch,const int c);
void _creat(BTnode** T,int &i,int *ch,const int c);
void _InorderTraverse(BTnode *T);
void InorderTraverse();
};
Tree::~Tree()
{
}
Tree::Tree()
{
m_root=NULL;
}
//中序遍歷
void Tree::InorderTraverse()
{
_InorderTraverse(m_root);
}
void Tree::_InorderTraverse(BTnode *T)
{
if(T)
{
_InorderTraverse(T->Lchild);
cout<<T->data;
_InorderTraverse(T->Rchild);
}
}
//先序
void Tree::creat(int *ch,const int c)
{
int i=0;
_creat(&m_root,i,ch,c);
}
void Tree::_creat(BTnode** T,int &i,int *ch,const int c)
{
if(ch[i]!=c)
{
(*T)=new BTnode();
(*T)->data=ch[i];
_creat(&((*T)->Lchild),++i,ch,c);
_creat(&((*T)->Rchild),++i,ch,c);
}
}
void main()
{
int a[]={1,5,3,0,0,4,0,0,6,7,0,0,2,0,0};
const int c=0;
Tree t;
t.creat(a,c);
t.InorderTraverse();
system("pause");
}
- 1 回答
- 0 關(guān)注
- 1290 瀏覽
添加回答
舉報(bào)