数据结构写一个算法,建立二叉树的二叉链表
时间: 2023-07-07 20:44:06 浏览: 128
好的,以下是建立二叉树的二叉链表的算法:
```
// 定义二叉树的节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 建立二叉树的函数
TreeNode* buildBinaryTree(vector<int>& nums, int index) {
if (index >= nums.size()) {
return nullptr;
}
TreeNode* root = new TreeNode(nums[index]);
root->left = buildBinaryTree(nums, 2 * index + 1);
root->right = buildBinaryTree(nums, 2 * index + 2);
return root;
}
```
以上代码中,`TreeNode` 结构体表示二叉树节点,包含一个整数值 `val`,以及左右子树的指针 `left` 和 `right`。`buildBinaryTree` 函数接收一个整数型数组 `nums` 和一个整数 `index`,表示当前节点在数组中的下标。函数首先判断当前下标是否越界,如果越界,则返回空指针。否则,创建一个新节点,将数组中对应下标的值赋给该节点的 `val` 属性,然后递归调用 `buildBinaryTree` 函数分别构建该节点的左右子树,并将左右子树的根节点分别赋给该节点的 `left` 和 `right` 属性。最后返回根节点即可。
阅读全文