二叉树中序遍历只打印第一个值

问题描述 投票:0回答:0

我创建了一个二叉树程序,我想进行中序遍历以显示值,然后最终将其与另一棵树进行比较,但中序遍历仅打印第一个值。

为什么会这样?我认为这可能是我创建树的方式,但我不确定。也许我需要先将我的值放在一个数组中?

#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);
}
c binary-tree
© www.soinside.com 2019 - 2024. All rights reserved.