21xrx.com
2024-12-22 20:40:30 Sunday
登录
文章检索 我的文章 写文章
如何在C++中建立二叉树?
2023-07-09 16:21:07 深夜i     --     --
C++ 二叉树 建立 节点 指针

在 C++ 中,我们可以使用结构体(struct)来表示二叉树的节点,每个节点包含三部分:节点的值、指向左子树的指针和指向右子树的指针。整个二叉树就可以由根节点开始,每个节点向左、向右延伸而组成。

下面是用 C++ 实现二叉树的一般步骤:

1. 创建一个结构体,用于表示二叉树的节点,包含节点值、左子树指针和右子树指针。


struct TreeNode {

  int val;

  TreeNode* left;

  TreeNode* right;

  TreeNode(int x) : val(x), left(NULL), right(NULL) {}

};

2. 初始化根节点。在 C++ 中,我们可以使用 new 操作符来动态分配内存,创建一个节点并将其赋值给根节点。


TreeNode* root = new TreeNode(1);

3. 建立二叉树。我们可以通过递归的方式来建立二叉树。对于每个节点,我们先确认它的值,再递归建立左、右子树。在递归的过程中,我们需要不断更新节点的左右子树指针。


void buildTree(TreeNode*& node, vector<int>& nums, int index) {

  if (index >= nums.size() || nums[index] == -1)

    return;

  

  node = new TreeNode(nums[index]);

  buildTree(node->left, nums, index * 2 + 1);

  buildTree(node->right, nums, index * 2 + 2);

}

在这个函数中,第一个参数是节点指针的引用,因为我们需要更新它的左右子树指针。

第二个参数是一个整数向量,包含了节点的值。这里我们假设节点的值都是整数。

第三个参数是当前节点的在向量中的索引,每个节点在向量中的位置满足以下规律:第 i 个节点的左子节点在 2i+1 的位置,右子节点在 2i+2 的位置。

4. 建立二叉树的调用。在主函数中调用 buildTree 函数来建立二叉树。


int main() {

  vector<int> nums = 1;

  TreeNode* root = NULL;

  buildTree(root, nums, 0);

  return 0;

}

在这个例子中,我们建立了一个高度为 2 的二叉树,其中根节点值为 1,左子节点值为 2,右子节点值为 3。

通过以上步骤,就可以在 C++ 中建立二叉树了。需要注意的是,在使用完毕后,我们需要手动释放二叉树所占用的内存,以免造成内存泄漏。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复