VC二叉树

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:19:43
DOWRD Function1(&t)
{
if (t->Num.numb==0)
{
if (t->Num.abc==3)
{
CString str;
str.Format("%d",t->Num.abc);
MessageBox(NULL,str,"",NULL);
return t->Num.abc;
}
Function1(t->LeftTree);
Function1(t->RightTree);
}

return 1;
}
程序的设计类似这样子,MessageBox(NULL,str,"",NULL);能得到3,但为什么返回值就是不对呢?高手指点下该怎么遍历这个二叉树,当中间的值为自已想要的时候就能成功返回?
这个试过了没用的

一般来说递归编译二叉树时判断递归结束的条件是判断传入的树根指针是否==NULL;

不知道你的Tree的结构,不太好下结论。

建议你写成这个样子:
int PreOrderTraverse(BTree &T){
if(T){
//do something
if(IsFound())
return ...;
else{
return InOrderTraverse(T->lchild);
return InOrderTraverse(T->rchild);
}
}
else
return -1;
}

CString str;
str.Format("%d",t->Num.abc);
MessageBox(NULL,str,"",NULL);
DWORD dwRet = t->Num.abc;
return dwRet;
----------------------------
那你贴全代码吧

能否把 t 也贴出来?