C++写一段 二叉树算法
2023-11-03 15:56:29
|
浏览 431
二叉树是一种常见的数据结构,可以用来存储和操作具有层级关系的数据。在C++中,我们可以使用类来实现二叉树的算法。下面是一段用C++编写的二叉树算法示例。
复制代码
#include <iostream>
class TreeNode {
public:
int value;
TreeNode* left;
TreeNode* right;
TreeNode(int value) {
this->value = value;
left = nullptr;
right = nullptr;
}
};
class BinaryTree {
public:
TreeNode* root;
BinaryTree() {
root = nullptr;
}
void insert(int value) {
TreeNode* newNode = new TreeNode(value);
if (root == nullptr) {
root = newNode;
} else {
TreeNode* current = root;
while (true) {
if (value < current->value) {
if (current->left == nullptr) {
current->left = newNode;
break;
} else {
current = current->left;
}
} else {
if (current->right == nullptr) {
current->right = newNode;
break;
} else {
current = current->right;
}
}
}
}
}
void preOrderTraversal(TreeNode* node) {
if (node == nullptr) {
return;
}
std::cout << node->value << " ";
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
};
int main() {
BinaryTree tree;
tree.insert(5);
tree.insert(3);
tree.insert(7);
tree.insert(1);
tree.insert(4);
std::cout << "Pre-order traversal: ";
tree.preOrderTraversal(tree.root);
std::cout << std::endl;
return 0;
}
这段代码实现了二叉树的创建和前序遍历算法。首先,我们定义了一个TreeNode类,表示二叉树的节点。每个节点包含一个整数值、一个左孩子节点和一个右孩子节点。
然后,我们定义了BinaryTree类,用于创建和操作二叉树。它包含一个指向根节点的指针。insert方法用于向二叉树插入节点,根据节点值的大小确定插入的位置。preOrderTraversal方法用于执行前序遍历,即先访问根节点,然后递归地访问左子树和右子树。
在main函数中,我们创建了一个二叉树,并向其中插入了一些节点。然后,我们调用preOrderTraversal方法对二叉树进行前序遍历,并输出结果。
希望这篇文章对你有所帮助!如果你有任何问题或者需要进一步的帮助,请随时告诉我。
我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;