TreeNode* Create_Tree(vector<int> &nums, int i) //层次遍历创建二叉树
{
if (i >= nums.size() || nums[i] == NULL ) //超出数组范围
return nullptr;
TreeNode *root = new TreeNode(nums[i]);
root->left = Create_Tree(nums, i * 2);
root->right = Create_Tree(nums, i * 2 + 1);
return root;
}
int main()
{
/*二叉树
1
/ \
3 2
/\ \
4 5 9
*/
vector<int> nums = {1, 3, 2, 4, 5, 0, 9}; //层次数组
nums.insert(nums.begin(), NULL); //头部插入一个占位的, 方便下标从1开始
TreeNode *tree = Create_Tree(nums, 1); //从下标1开始用,层次遍历值创建二叉树
nums.erase(nums.begin(), nums.begin() + 1); //删除头部的0