赞
踩
手动构建二叉树
1、先new TreeNode[size]数组
2、对数组中的每个val进行赋值,left和right进行置为nullptr
3、从0遍历到size/2-1;根据左孩子和父节点的关系,右孩子和父节点的关系进行链接
#include <iostream> #include <string.h> #include <string> #include <vector> #include <map> #include <stack> #include <queue> #include <algorithm> #include <unordered_map> #include <list> #include <memory> #include <functional> #include <set> #include <iostream> #include <vector> #include <algorithm> #include <limits.h> #include <math.h> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; }; TreeNode *CreateTree(vector<int> &res) { if (res.empty()) { return nullptr; } int size = res.size(); TreeNode *node = new TreeNode[size]; TreeNode *head = &node[0]; //赋值 for (int i = 0; i < size; ++i) { node[i].val = res[i]; node[i].left = nullptr; node[i].right = nullptr; } //建立关系 //父节点 for (int i = 0; i <= size / 2 - 1; ++i) { //左孩子 if (2 * i + 1 < size) { node[i].left = &node[2 * i + 1]; } //右孩子 if (2 * i + 2 < size) { node[i].right = &node[2 * i + 2]; } } return head; } int main() { vector<int> res{1, 10, 6, 3, 4, 1}; TreeNode *root = CreateTree(res); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。