用C++写一个二叉树的遍历
时间: 2023-12-27 20:57:14 浏览: 70
很高兴回答你的问题。以下是使用C语言编写的二叉树遍历的代码示例:
/* 定义二叉树节点结构体 */
typedef struct TreeNode {
int data; // 节点数据
struct TreeNode* left; // 左子节点指针
struct TreeNode* right; // 右子节点指针
} TreeNode;
/* 先序遍历二叉树 */
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->data); // 先访问当前节点
preorderTraversal(root->left); // 再遍历左子树
preorderTraversal(root->right); // 最后遍历右子树
}
/* 中序遍历二叉树 */
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left); // 先遍历左子树
printf("%d ", root->data); // 再访问当前节点
inorderTraversal(root->right); // 最后遍历右子树
}
/* 后序遍历二叉树 */
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left); // 先遍历左子树
postorderTraversal(root->right); // 再遍历右子树
printf("%d ", root->data); // 最后访问当前节点
}
上面的代码演示了如何使用递归方式遍历二叉树,包括先序遍历、中序遍历和后序遍历。在遍历时,我们需要判断当前节点是否为空,如果为空则直接返回。如果不为空,我们就先访问当前节点,再按照遍历顺序递归遍历左右子树。在先序遍历中,先访问当前节点;在中序遍历中,中间访问当前节点;在后序遍历中,最后访问当前节点。
阅读全文