c++,用创建结点方法创建二叉树
时间: 2024-10-19 15:14:43 浏览: 19
在C++中,我们可以使用结构体或类来创建二叉树的数据结构,并通过创建节点的方法构建树。这里我们先定义一个简单的二叉树节点(Node):
```cpp
struct TreeNode {
int val; // 节点值
TreeNode* left; // 左子节点指针
TreeNode* right; // 右子节点指针
TreeNode(int x) : val(x), left(NULL), right(NULL) {} // 构造函数
};
```
接下来,你可以创建一个方法来动态地添加节点并构造二叉树,例如按照前序遍历的方式插入元素:
```cpp
TreeNode* createBinaryTree(vector<int>& nums) {
if (nums.empty()) return nullptr;
TreeNode* root = new TreeNode(nums[0]); // 创建根节点
stack<TreeNode*> s;
s.push(root);
for (int i = 1; i < nums.size(); i++) {
while (!s.empty() && s.top()->val > nums[i]) { // 找到合适的位置插入新节点
TreeNode* node = s.top();
s.pop();
if (node->left == NULL) {
node->left = new TreeNode(nums[i]);
break;
} else {
s.push(node);
}
}
if (s.empty()) {
s.push(new TreeNode(nums[i])); // 如果栈为空,说明当前位置作为新的根节点
}
}
return root;
}
```
这个方法首先创建根节点,然后使用栈辅助进行遍历,当找到比当前值小的节点时,将该节点压入栈中,直到找到适合的位置插入新的节点。
阅读全文