题解 | #二叉树遍历#
二叉树遍历
https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef
#include <stdio.h> typedef char BTDataType; typedef struct BinaryTreeNode { BTDataType data; struct BinaryTreeNode* left; struct BinaryTreeNode* right; }BTNode; BTNode* BuyBTNode(BTDataType x) { BTNode* newNode = (BTNode*)malloc(sizeof(BTNode)); if (newNode == NULL) { perror("malloc failed"); return NULL; } newNode->data = x; newNode->left = NULL; newNode->right = NULL; return newNode; } BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi) { //当*pi > n时,后续节点默认为空 if (*pi >= n) { (*pi)++; return NULL; } if (a[*pi] == '#') { (*pi)++; return NULL; } BTNode* root = BuyBTNode(a[*pi]); (*pi)++; root->left = BinaryTreeCreate(a, n, pi); root->right = BinaryTreeCreate(a, n, pi); return root; } //针对char输出 void BTNodePrint(BTNode* node) { if (node == NULL) { printf(""); } else { printf("%c ", node->data); } } void BinaryTreeInOrder(BTNode* root) { if (root == NULL) { BTNodePrint(root); return; } BinaryTreeInOrder(root->left); BTNodePrint(root); BinaryTreeInOrder(root->right); } int main() { char a[100] = {}; while (scanf("%s", a) != EOF) { //创建二叉树 int i = 0; BTNode* root = BinaryTreeCreate(a, 100, &i); //中序遍历 BinaryTreeInOrder(root); } return 0; }