Stern-Brocot Tree(SB树) C++代码
时间: 2024-10-14 14:14:45 浏览: 4
Stern-Brocot Tree(SB树),也称为黄金分割树或赫尔曼德树,是一种用于生成所有有理数序列的数据结构。它通过递归的方式构造,并且每个节点都是前两个节点的比例。在C++中实现这个树可以采用递归或者迭代的方式来构建。
这里是一个简单的C++代码示例,使用递归:
```cpp
#include <iostream>
#include <vector>
struct Node {
double value;
std::vector<Node*> children;
};
Node* buildSternBrocotTree(int left = -1, int right = 1) {
if (left == right) return nullptr;
Node* root = new Node();
root->value = (left + right) / 2;
Node* leftChild = buildSternBrocotTree(left, root->value);
root->children.push_back(leftChild);
Node* rightChild = buildSternBrocotTree(root->value, right);
root->children.push_back(rightChild);
return root;
}
void printInOrder(Node* node) {
if (node == nullptr) return;
for (auto child : node->children) {
printInOrder(child);
std::cout << node->value << " ";
}
}
int main() {
Node* root = buildSternBrocotTree();
printInOrder(root);
return 0;
}
```
在这个例子中,`buildSternBrocotTree`函数创建了树的根节点并递归地添加左右子节点,而`printInOrder`函数按照从小到大的顺序打印节点值,展示整个树的构造。