C++ 二叉搜索树(BST)遍历测试

C++ 二叉搜索树(BST)遍历测试,c++,binary-search-tree,googletest,C++,Binary Search Tree,Googletest,使用Google test测试二叉搜索树的顺序遍历的好方法是什么?我可以通过打印节点的值并验证列表是否直观排序来手动测试它。有没有一种方法可以使用谷歌测试自动验证这一点?我正在考虑向node类添加一个静态字符串,并为访问的每个节点追加字符串。问题是可能有多个树,每个树都有自己的顺序列表,但只能有一个静态字符串 一旦我开始使用顺序遍历,解决方案应该可以扩展到顺序前和顺序后的遍历。跟踪上一个条目以及不再使用第一个条目时 断言您仍然在第一个条目上,或者当前条目>=上一个条目。这将起作用,但无法将此结果

使用Google test测试二叉搜索树的顺序遍历的好方法是什么?我可以通过打印节点的值并验证列表是否直观排序来手动测试它。有没有一种方法可以使用谷歌测试自动验证这一点?我正在考虑向node类添加一个静态字符串,并为访问的每个节点追加字符串。问题是可能有多个树,每个树都有自己的顺序列表,但只能有一个静态字符串


一旦我开始使用顺序遍历,解决方案应该可以扩展到顺序前和顺序后的遍历。

跟踪上一个条目以及不再使用第一个条目时


断言您仍然在第一个条目上,或者当前条目>=上一个条目。

这将起作用,但无法将此结果公开给Google测试。它还将测试代码添加到我的实现中,即使Google test没有调用它,它也将始终运行。添加一个以lambda、functor或function+state为参数的遍历例程。用于测试目的和实现打印功能
bool索引(Node*Node,std::function fn){return Node?索引(Node->left)&&fn(Node)&&inoder(Node->right):true;}
Node*prev();ASSERT_TRUE(顺序为(根,[&prev](节点*节点){if(prev&&Node->valval){return false;}否则{prev=Node;return TRUE;}})