需求
现给出一个数字序列nums={1,2,3,4,5,6,7},请根据该数字序列按层建立二叉树
举例:{1,2,3,4,5,6,7}构造的二叉树为:
1
/ \
2 3
/ \ / \
4 5 6 7
请给出具体的代码实现。
代码实现
#include<iostream>
#include<vector>
#include<queue>
#include<string>
using namespace std;
typedef struct BinaryTreeNode {
int val;
BinaryTreeNode* left;
BinaryTreeNode* right;
BinaryTreeNode():val(0),left(nullptr),right(nullptr) {
}
BinaryTreeNode(int x) :val(x), left(nullptr), right(nullptr) {
}
}BiNode;
//递归,根据层序序列建树,默认序列下标从0开始
void Build(BiNode* &root, int nums[],int len,int i) {
if (i < len) {
root->val = nums[i];
//对于序列中值为-1的将其视为null结点
if (i * 2