как поймать данные в этом коде swaptree? - PullRequest
0 голосов
/ 29 декабря 2018

этот код написан в пользу создателя.я хочу дать коду мои действительные числа столько, сколько я хочу.я понял, что мне нужно сделать что-то вроде этого: 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 голосов
/ 29 декабря 2018

Вы можете сделать что-то вроде:

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

После этого inputNode будет указывать на узел с value в качестве поля data.Вам нужно будет реализовать функцию, которая берет этот указатель и вставляет его в дерево в нужном месте.Это будет зависеть от типа дерева, которое вы реализуете.

...