反向遍历二叉树,c++代码
时间: 2023-11-25 19:02:50 浏览: 83
反向遍历二叉树,即从右子节点,根节点,左子节点的顺序进行遍历。
以下是使用C语言编写的反向遍历二叉树的代码:
```
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建新节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if(newNode == NULL) {
printf("创建节点失败!内存不足。\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 反向遍历二叉树
void reverseInOrderTraversal(Node* root) {
if(root == NULL) {
return;
}
// 将右子节点作为根节点递归调用
reverseInOrderTraversal(root->right);
// 输出根节点的数据
printf("%d ", root->data);
// 将左子节点作为根节点递归调用
reverseInOrderTraversal(root->left);
}
int main() {
// 创建二叉树
Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 反向遍历二叉树
printf("反向遍历二叉树结果:");
reverseInOrderTraversal(root);
return 0;
}
```
这段代码中,我们首先定义了一个二叉树节点结构体,包含了节点的数据以及左右子节点的指针。然后我们创建了一个用于创建新节点的函数 createNode,该函数分配了节点的内存,并对其数据进行赋值。接着我们实现了反向遍历二叉树的函数 reverseInOrderTraversal,该函数使用递归的方式进行遍历,先遍历右子节点,然后输出根节点的数据,最后遍历左子节点。在主函数中,我们创建了一个二叉树并调用了反向遍历函数进行输出。
阅读全文