21xrx.com
2025-04-22 19:16:15 Tuesday
文章检索 我的文章 写文章
C++ 实现二叉树的创建
2023-06-23 07:28:04 深夜i     26     0
C++ 二叉树 创建

实现二叉树是数据结构中非常基础的部分,因为它是许多其他常见数据结构的基础。在 C++ 中,我们可以使用指针来实现二叉树。

首先,我们需要定义二叉树的节点类。该类应该包含值和左/右子节点的指针。这里我们给出节点类的定义:

class TreeNode{
 public:
  int val;
  TreeNode* left;
  TreeNode* right;
  TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

接下来,我们可以编写一个函数来从输入的一组数组中构造一棵二叉树。例如,我们可以使用以下代码来创建一个简单的二叉树:

TreeNode* buildTree(vector<int>& nums){
 if (nums.empty()) return nullptr;
 TreeNode* root = new TreeNode(nums[0]);
 queue<TreeNode*> q{{root}};
 int i = 1;
 while (!q.empty() && i < nums.size()) {
  TreeNode* t = q.front(); q.pop();
  if (i < nums.size() && nums[i] != NULL) {
   t->left = new TreeNode(nums[i]);
   q.push(t->left);
  }
  i++;
  if (i < nums.size() && nums[i] != NULL) {
   t->right = new TreeNode(nums[i]);
   q.push(t->right);
  }
  i++;
 }
 return root;
}

在这个函数中,我们从队列中按层遍历二叉树,将节点的值设置为给定的数组值之后添加到队列中。这个函数的返回值是树的根节点。

最后,我们可以写一个函数来遍历这棵二叉树。以下是一个实现前序遍历的函数:

void preOrderTraversal(TreeNode* root) {
 if (root == NULL) return;
 cout << root->val << " ";
 preOrderTraversal(root->left);
 preOrderTraversal(root->right);
}

在这个函数中,我们首先输出当前节点的值,然后递归遍历左右两个子树。

使用上述的函数,我们可以快速地构造一棵二叉树,并进行操作。二叉树有许多决策树和搜索相关的应用,因此学习如何创建和操作它们对于编写高效的算法和程序非常重要。

  
  

评论区

请求出错了