## 构建二叉树 5 2 3 4 5 -1 -1 -1 -1 ```cpp #include 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) {} }; int main() { int n; cin >> n; vector nodes(n); for (int i = 0; i < n; i++) { nodes[i] = new TreeNode(i); } for (int i = 0; i < n; i++) { int left, right; cin >> left >> right; if (left != -1) nodes[i]->left = nodes[left - 1]; if (right != -1) nodes[i]->right = nodes[right - 1]; } return 0; } ``` ## 构建二叉树 [4,2,7,1,3,6,9] ```cpp #include 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) {} }; void buildTree(TreeNode*& node, vector& nums, int len, int index) { if (index >= len) return; node = new TreeNode(nums[index]); buildTree(node->left, nums, len, 2 * index + 1); buildTree(node->right, nums, len, 2 * index + 2); } int main() { vector nums = {4, 2, 7, 1, 3, 6, 9}; TreeNode* root; buildTree(root, nums, nums.size(), 0); return 0; } ```