例如,我写了一个二叉树先序遍历算法,它和书上教的不一样,我怎样检验它的正确性?
代码如下:
class Bnode{...};//二叉树节点
class Bintree{...};//二叉树
template template //用visit访问x子树
void Bintree::travpre(VST& visit,Bnode* x){
stack> s;
Bnode tp = x;
while (tp != nullptr)
{
visit(tp);
if (tp->rchild_ != nullptr)
s.push(tp->rchild_);
if (tp->lchild_ != nullptr)
tp = tp->lchild_;
else
{
tp = s.top();
s.pop();
}
}
}
它能通过编译,我在脑子里推导了几遍,也没发现问题,有没有更可靠的方法检验算法的正确性。
运行测试不就好了吗
测试,测试所有分支,输入各种值,看输出是否正确.
写一个创建二叉树的 或者找一个
然后用你的遍历算法输出试试
设计几个test用例跑一下不就清楚了