二叉树右序遍历C语言实例
时间: 2023-04-02 10:02:02 浏览: 137
可以回答这个问题。二叉树右序遍历的C语言实例可以使用递归或非递归方式实现。递归方式实现代码如下:
```
void rightOrderTraversal(TreeNode* root) {
if(root == NULL) {
return;
}
rightOrderTraversal(root->right);
printf("%d ", root->val);
rightOrderTraversal(root->left);
}
```
非递归方式实现代码如下:
```
void rightOrderTraversal(TreeNode* root) {
if(root == NULL) {
return;
}
stack<TreeNode*> s;
TreeNode* cur = root;
while(cur != NULL || !s.empty()) {
while(cur != NULL) {
s.push(cur);
cur = cur->right;
}
cur = s.top();
s.pop();
printf("%d ", cur->val);
cur = cur->left;
}
}
```
相关问题
二叉树左序遍历C语言实例
可以回答这个问题。二叉树的左序遍历可以使用递归或者栈来实现。以下是使用递归实现的C语言代码示例:
```c
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
void inorderTraversal(struct TreeNode* root, int* res, int* returnSize){
if(root == NULL) return;
inorderTraversal(root->left, res, returnSize);
res[(*returnSize)++] = root->val;
inorderTraversal(root->right, res, returnSize);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){
int* res = (int*)malloc(sizeof(int) * 100);
*returnSize = ;
inorderTraversal(root, res, returnSize);
return res;
}
```
这段代码实现了二叉树的左序遍历,并将结果存储在一个动态分配的数组中返回。
二叉树中序遍历C语言实例
当然可以,以下是一个二叉树中序遍历的 C 语言实例:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
void inorderTraversal(struct TreeNode* root){
if(root == NULL){
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
int main(){
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = 1;
root->left = NULL;
root->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->val = 2;
root->right->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->left->val = 3;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = NULL;
inorderTraversal(root);
return ;
}
```
以上代码实现了一个二叉树的中序遍历,输出结果为:1 3 2。
阅读全文