NowCoder | KY11 二叉树遍历
OJ链接
- 简单来说就是构建这个二叉树
- 定义结构体
- 通过递归方式根据输入的字符串构建二叉树。对于输入字符串中的每个字符,如果是 ‘#’ 表示空节点,否则创建一个新节点,并递归地构建左右子树。
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>typedef struct TreeNode {struct TreeNode* left;struct TreeNode* right;char val;
} TNode;//创建节点
TNode* CreateTree(char* a,int*pi) {if(a[*pi] == '#'){++(*pi);return NULL;}TNode* root = (TNode*)malloc(sizeof(TNode));root->val = a[(*pi)++];root->left = CreateTree(a,pi);root->right = CreateTree(a,pi);return root;
}//前序遍历
void InOrder(TNode* root)
{if(root == NULL)return;InOrder(root->left);printf("%c ",root->val);InOrder(root->right);
}int main() {char str[100];scanf("%s", str);int i = 0;TNode* root = CreateTree(str,&i);InOrder(root);return 0;
}