c++二叉树的遍历
作者:野牛程序员:2023-12-04 16:43:55 C++阅读 2688
二叉树的遍历包括前序遍历、中序遍历和后序遍历。以下是这三种遍历的C++代码:
前序遍历(Preorder Traversal):
void preorderTraversal(TreeNode* root) { if (root != nullptr) { cout << root->val << " "; preorderTraversal(root->left); preorderTraversal(root->right); } }
中序遍历(Inorder Traversal):
void inorderTraversal(TreeNode* root) { if (root != nullptr) { inorderTraversal(root->left); cout << root->val << " "; inorderTraversal(root->right); } }
后序遍历(Postorder Traversal):
void postorderTraversal(TreeNode* root) { if (root != nullptr) { postorderTraversal(root->left); postorderTraversal(root->right); cout << root->val << " "; } }
这里假设你有一个二叉树的节点类定义为:
struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };
在实际使用时,你需要先构建一个二叉树,并将根节点传递给相应的遍历函数。
#include <iostream> using namespace std; // 二叉树节点的定义 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} }; // 前序遍历 void preorderTraversal(TreeNode* root) { if (root != nullptr) { cout << root->val << " "; preorderTraversal(root->left); preorderTraversal(root->right); } } // 中序遍历 void inorderTraversal(TreeNode* root) { if (root != nullptr) { inorderTraversal(root->left); cout << root->val << " "; inorderTraversal(root->right); } } // 后序遍历 void postorderTraversal(TreeNode* root) { if (root != nullptr) { postorderTraversal(root->left); postorderTraversal(root->right); cout << root->val << " "; } } int main() { // 构建一个简单的二叉树 TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5); // 输出遍历结果 cout << "前序遍历结果: "; preorderTraversal(root); cout << endl; cout << "中序遍历结果: "; inorderTraversal(root); cout << endl; cout << "后序遍历结果: "; postorderTraversal(root); cout << endl; // 释放内存,防止内存泄漏 delete root->left->left; delete root->left->right; delete root->left; delete root->right; delete root; return 0; }
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c++数组和链表的区别
- 下一篇:c++const与static的用法