亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

程序沒錯 ,輸出不出來結果,調試了好長時間 。。。。。 謝謝

程序沒錯 ,輸出不出來結果,調試了好長時間 。。。。。 謝謝

C++
慕田峪7551596 2017-11-16 14:35:27
#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 回答

?
慕移動6052691

TA貢獻22條經驗 獲得超7個贊

1、如果想改變指針所指向的內容,采用單重指針就行了,就是普通的真正

2、如果想改變指針所指向的地址,則需要采用雙重指針?BTnode** T,_creat(m_root,i,ch,c);如果想改變m_root的指向,所以要使用雙重指針,傳入&m_roor;

修改后代碼:遍歷出的內容是否正確我沒有做檢查

#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");

}


查看完整回答
反對 回復 2017-11-16
  • 1 回答
  • 0 關注
  • 1292 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號