在C++中實現樹節點的父指針與孩子指針可以通過定義一個樹節點類來實現。一個簡單的樹節點類可以包含數據成員表示節點的值,父指針和孩子指針。
#include <iostream>
#include <vector>
class TreeNode {
public:
int val;
TreeNode* parent;
std::vector<TreeNode*> children;
TreeNode(int value) : val(value), parent(nullptr) {}
void addChild(TreeNode* child) {
children.push_back(child);
child->parent = this;
}
void removeChild(TreeNode* child) {
for (int i = 0; i < children.size(); i++) {
if (children[i] == child) {
children.erase(children.begin() + i);
child->parent = nullptr;
break;
}
}
}
};
int main() {
TreeNode* root = new TreeNode(1);
TreeNode* child1 = new TreeNode(2);
TreeNode* child2 = new TreeNode(3);
root->addChild(child1);
root->addChild(child2);
std::cout << "Child 1's parent: " << child1->parent->val << std::endl;
std::cout << "Child 2's parent: " << child2->parent->val << std::endl;
root->removeChild(child1);
std::cout << "Child 1's parent after removal: " << child1->parent << std::endl;
delete child1;
delete child2;
delete root;
return 0;
}
在上面的代碼中,定義了一個TreeNode
類,其中包含了一個整型值val
,父指針parent
和孩子指針children
。通過addChild()
方法可以添加孩子節點,并同時更新孩子節點的父指針;通過removeChild()
方法可以移除孩子節點,并將其父指針置為nullptr
。
在main()
函數中,創建了一個根節點和兩個子節點,并演示了如何使用父指針和孩子指針。最后記得要在程序結束前釋放動態分配的內存。
通過這種方式,可以方便地構建樹形結構,并實現節點之間的父子關系。