我创建了一个二叉树程序,我想进行中序遍历以显示值,然后最终将其与另一棵树进行比较,但中序遍历仅打印第一个值。
为什么会这样?我认为这可能是我创建树的方式,但我不确定。也许我需要先将我的值放在一个数组中?
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct treenode {
int data;
struct treenode *left;
struct treenode *right;
} node;
struct treenode *tree;
void inorderTraversal(struct treenode *);
void create_tree(struct treenode *);
struct treenode *insertElement(struct treenode *, int);
void create_tree(struct treenode *tree) { tree = NULL; }
struct treenode *insertElement(struct treenode *tree, int val) {
struct treenode *ptr, *nodeptr, *parentptr;
ptr = (struct treenode *)malloc(sizeof(struct treenode));
ptr->data = val;
ptr->left = NULL;
ptr->right = NULL;
if (tree == NULL) {
tree = ptr;
tree->left = NULL;
tree->right = NULL;
} else {
parentptr = NULL;
nodeptr = tree;
while (nodeptr != NULL) {
parentptr = nodeptr;
if (val < nodeptr->data)
nodeptr = nodeptr->left;
else
nodeptr = nodeptr->right;
}
if (val < parentptr->data)
parentptr->left = ptr;
else
parentptr->right = ptr;
}
return tree;
}
void inorderTraversal(struct treenode *tree) {
if (tree != NULL) {
inorderTraversal(tree->left);
printf("%d\t", tree->data);
inorderTraversal(tree->right);
}
}
int main(void) {
int val;
struct treenode *ptr;
create_tree(tree);
printf("\n Enter the value of the new node : ");
scanf("%d", &val);
tree = insertElement(tree, val);
printf("The Tree in order traversal\n");
inorderTraversal(tree);
}