Hackerrank | Tree: Preorder Traversal

133210·2021년 7월 26일
0

2020 문제풀이

목록 보기
11/14
post-thumbnail

https://www.hackerrank.com/challenges/tree-preorder-traversal/problem

Problem

preOrder 함수 완성시키기
왼쪽 > 오른쪽 순으로 읽기

Code

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

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

struct node* insert( struct node* root, int data ) {
        
    if(root == NULL) {
    
        struct node* node = (struct node*)malloc(sizeof(struct node));

        node->data = data;

        node->left = NULL;
        node->right = NULL;
        return node;
      
    } else {
      
        struct node* cur;
        
        if(data <= root->data) {
            cur = insert(root->left, data);
            root->left = cur;
        } else {
            cur = insert(root->right, data);
            root->right = cur;
        }
    
        return root;
    }
}

/* you only have to complete the function given below.  
node is defined as  

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

*/
void preOrder(struct node* root) {
    struct node* temp;
    temp = root;
    if (temp != NULL)
    {
        printf("%d ", temp->data);
        preOrder(temp->left);
        preOrder(temp->right);
    }
}

int main() {
  
    struct node* root = NULL;
    
    int t;
    int data;

    scanf("%d", &t);

    while(t-- > 0) {
        scanf("%d", &data);
        root = insert(root, data);
    }
  
    preOrder(root);
    return 0;
}

Result

0개의 댓글