C++中树节点的插入与删除操作
导读:在C++中,可以通过定义一个树节点结构体来表示树节点,并编写插入和删除操作的函数来实现对树节点的操作。以下是一个简单的示例: #include <iostream> struct TreeNode { int val;...
在C++中,可以通过定义一个树节点结构体来表示树节点,并编写插入和删除操作的函数来实现对树节点的操作。以下是一个简单的示例:
#include <
iostream>
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int v) : val(v), left(nullptr), right(nullptr) {
}
}
;
void insert(TreeNode* root, int val) {
if (root == nullptr) {
root = new TreeNode(val);
}
else if (val <
root->
val) {
if (root->
left == nullptr) {
root->
left = new TreeNode(val);
}
else {
insert(root->
left, val);
}
}
else {
if (root->
right == nullptr) {
root->
right = new TreeNode(val);
}
else {
insert(root->
right, val);
}
}
}
void remove(TreeNode* root, int val) {
if (root == nullptr) {
return;
}
if (val <
root->
val) {
remove(root->
left, val);
}
else if (val >
root->
val) {
remove(root->
right, val);
}
else {
if (root->
left == nullptr) {
TreeNode* temp = root->
right;
delete root;
root = temp;
}
else if (root->
right == nullptr) {
TreeNode* temp = root->
left;
delete root;
root = temp;
}
else {
TreeNode* minNode = root->
right;
while (minNode->
left != nullptr) {
minNode = minNode->
left;
}
root->
val = minNode->
val;
remove(root->
right, minNode->
val);
}
}
}
int main() {
TreeNode* root = new TreeNode(5);
insert(root, 3);
insert(root, 7);
insert(root, 2);
insert(root, 4);
insert(root, 6);
insert(root, 8);
remove(root, 3);
// 输出树的节点值
std::cout <
<
root->
val <
<
" " <
<
root->
left->
val <
<
" " <
<
root->
right->
val <
<
std::endl;
return 0;
}
在上面的示例中,定义了一个TreeNode结构体来表示树节点,然后实现了插入和删除操作的函数insert和remove。在main函数中创建了一个根节点,并依次插入一些节点值,然后删除一个节点值,并输出树的节点值。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++中树节点的插入与删除操作
本文地址: https://pptw.com/jishu/695737.html
