最近在刷力扣时遇到了不少跟二叉树有关的题目,每当想要在本地调试的时候,总会苦恼于输入数据的麻烦。遂在网上搜索,竟然没有找到一个合适的轮子。。
于是决定自己写一个二叉树生成器,用力扣测试数据格式的字符串生成一个二叉树以供调试使用。
力扣的测试数据字符串的格式类似于层次遍历,但是包含了一些用于占位的空节点,具体可以自行到力扣找相关题目查看。我的处理方式是把字符串里的所有null都替换成-2147483648(32位有符号数的最小值,即0xF0000000),这样再将处理完的字符串放到string stream上就可以直接以int格式读入了。但是如果需要处理的节点值范围包含了-2147483648,就有可能会遇到问题。
老懒狗了,没怎么做测试工作,大家可以自行取用测试,出bug概不负责🤣人菜码丑求轻喷~~
#include <deque>
#include <sstream>
#include <string>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() :
val(0), left(nullptr), right(nullptr) {
}
TreeNode(int x) :
val(x), left(nullptr), right(nullptr) {
}
TreeNode(int x, TreeNode *left, TreeNode *right) :
val(x), left(left), right(right) {
}
};
//Code of this function is from https://st