二叉树测试用例生成
因为在面试的过程中,免不了会遇到二叉树相关的题目,毕竟二叉树的先序、中序、后序遍历代码手撕是常有的事,那么 这个时候肯定要求自己有一组好的测试用例,但如果一个一个的设置节点,一是效率低。二会给面试官之中生疏的感觉。
补充知识
结合堆排序中,以根节点为第一个节点,那么二叉树中的节点关系:
1.如果第i个节点的左子节点存在,那么这个节点的左子节点为第2*i个节点;
2.如果第i个节点的右子节点存在,那么右子节点为第2*i+1个节点;
这个关系是在完全二叉树的情况成立,所以为了保持这个性质,如果有的节点不存在,也需要空出位置,作为一个占位。
生成测试用例思路
1.定义节点的结构
2.产生一个固定长度的数组alldata,长度为数的节点数+1,为了方便生成,我们以一颗完全二叉树来作为生成数据
3.从数组alldata[[1]]开始,对每一个节点进行初始化,alldata的第0个元素仅仅是用来占位
实例
以以下二叉树为例
#include <iostream>
#include<vector>
#include<stack>
#include<string>
using namespace std;
#define LN_SIZE 5
typedef struct Node {
struct Node* left, *right;
int data;
Node(int x) :data(x), left(nullptr), right(nullptr) {
}
Node() :data(0), left(nullptr