c++二叉树的建立与遍历
作者:野牛程序员:2023-07-03 15:43:37数据结构阅读 2664
在C++中,可以使用结构体或类来表示二叉树节点,然后通过递归的方式来建立和遍历二叉树。下面是一个使用结构体表示二叉树节点的示例:
#include <iostream> struct TreeNode { int data; TreeNode* left; TreeNode* right; TreeNode(int val) : data(val), left(nullptr), right(nullptr) {} }; // 递归方式建立二叉树 TreeNode* buildTree() { int val; std::cin >> val; if (val == -1) { // 输入-1表示空节点 return nullptr; } TreeNode* root = new TreeNode(val); std::cout << "Enter left child of " << val << ": "; root->left = buildTree(); std::cout << "Enter right child of " << val << ": "; root->right = buildTree(); return root; } // 前序遍历 void preorderTraversal(TreeNode* root) { if (root == nullptr) { return; } std::cout << root->data << " "; preorderTraversal(root->left); preorderTraversal(root->right); } // 中序遍历 void inorderTraversal(TreeNode* root) { if (root == nullptr) { return; } inorderTraversal(root->left); std::cout << root->data << " "; inorderTraversal(root->right); } // 后序遍历 void postorderTraversal(TreeNode* root) { if (root == nullptr) { return; } postorderTraversal(root->left); postorderTraversal(root->right); std::cout << root->data << " "; } int main() { std::cout << "Enter root value (-1 for empty node): "; TreeNode* root = buildTree(); std::cout << "Preorder traversal: "; preorderTraversal(root); std::cout << std::endl; std::cout << "Inorder traversal: "; inorderTraversal(root); std::cout << std::endl; std::cout << "Postorder traversal: "; postorderTraversal(root); std::cout << std::endl; return 0; }
在这个示例中,TreeNode
结构体表示二叉树的节点,其中包含一个整数 data
作为节点的值,以及左子节点和右子节点的指针。buildTree
函数使用递归的方式建立二叉树,用户可以输入节点的值,如果输入值为 -1 表示该节点为空。preorderTraversal
、inorderTraversal
和 postorderTraversal
函数分别进行前序、中序和后序遍历,并输出遍历结果。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
