如何检验一个算法的正确性?

例如,我写了一个二叉树先序遍历算法,它和书上教的不一样,我怎样检验它的正确性?
代码如下:
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用例跑一下不就清楚了