I tried to use recursion to create a binary tree, but when I type ABD***CE**FG***, the code didn't yield any result. I pressed space key but the code still didn't half. Was the code wrong or my input wrong?
#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{
struct tree *left;
struct tree *right;
char val;
}treeNode;
void createTree(treeNode **node)
{
char value=0;
value=getchar();
if(value=='*')
*node=NULL;
else
{
*node = (treeNode*)malloc(sizeof(treeNode));
if(!*node) exit(-1);
(*node)->val=value;
createTree(&(*node)->left);
createTree(&(*node)->right);
}
}
void preOrder(treeNode *node)
{
if (node==NULL) return;
putchar(node->val);
preOrder(node->left);
preOrder(node->right);
}
int main() {
// insert code here...
treeNode **node;
createTree(node);
preOrder(*node);
return 0;
}
treeNode **node; createTree(node), which passes an uninitialized variable tocreateTree.Thing* createThing(void)to this:void createThing(Thing** thing).int *value; scanf("%d", value);instead ofint value; scanf("%d", &value);. A classic one. There are tons of duplicates.