⭐️ 题目描述
🌟 牛客链接:二叉树的遍历
1️⃣ 代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct BinaryTreeNode {
char val;
struct BinaryTreeNode * left;
struct BinaryTreeNode * right;
}BinaryTreeNode;
// 创建二叉树的节点
BinaryTreeNode* createBinaryTreeNode (char val) {
BinaryTreeNode* root = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode));
root->val = val;
root->left = NULL;
root->right = NULL;
return root;
}
// 前序创建二叉树
BinaryTreeNode* createBinaryTree (char * str , int * curIndex) {
// 当前节点是 # 代表为空节点 跳过返回 NULL
if (str[*curIndex] == '#') {
(*curIndex)++;
return NULL;
}
BinaryTreeNode* root = createBinaryTreeNode(str[(*curIndex)++]);
root->left = createBinaryTree(str , curIndex);
root->right = createBinaryTree(str , curIndex);
return root;
}
// 中序遍历二叉树
void inOrder (BinaryTreeNode * root) {
if (root == NULL) {
return;
}
inOrder(root->left);
printf("%c " , root->val);
inOrder(root->right);
}
int main () {
char str[101] = {0};
scanf("%s" , str);
int index = 0;
BinaryTreeNode* root = createBinaryTree(str , &index);
inOrder(root);
return 0;
}