如何在此swaptree代码中捕获数据?

时间:2018-12-29 00:19:55

标签: c tree swap

此代码受其创建者的青睐。 我想给代码我的实际数字尽可能多。 我意识到我将不得不做这样的事情:     root-> left-> left-> left  创建更多级别

但是,如果我想创建更多关卡,该如何在代码中表达我的想法?

我的意思是继续这个学期只是浪费时间!

#include <stdio.h>
#include <stdlib.h>

struct node
{
     int data;
     struct node* left;
     struct node* right;
};

struct node* newNode(int data)
{
     struct node* node = (struct node*)malloc(sizeof(struct node));
     node->data = data;
     node->left = NULL;
     node->right = NULL;
     return(node);
}

void printInorder(struct node* node)
{
     if (node == NULL)
          return;
     printInorder(node->left);
     printf("%d ", node->data); 
     printInorder(node->right);
}


void swapTree(struct node*node)
{
    if(node==NULL) return;
    struct node*temp=node->left;
    node->left=node->right;
    node->right=temp;
    swapTree(node->left);
    swapTree(node->right);
}
int main()
{
     struct node *root  = newNode(1);
     root->left             = newNode(2);
     root->right           = newNode(3);
     root->left->left     = newNode(4);
     root->left->right   = newNode(5);
     printf("\n Inorder traversal of binary tree is \n");
     printInorder(root); 
     swapTree(root);
     printf("\n After swap Inorder traversal of binary tree is \n");
     printInorder(root); 

      return 0; 
}

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

int value;
scanf("%d", &value);
struct node *inputNode = newNode(value);

此后,inputNode将指向一个以value作为其data字段的节点。您将需要实现一个使用该指针并将其插入树中正确位置的函数。这将取决于您要实现的树的类型。