# Tree: Preorder Traversal

### Problem Statement :

```Complete the preorder function in the editor below, which has 1 parameter: a pointer to the root of a binary tree. It must print the values in the tree's preorder traversal as a single line of space-separated values.

Input Format

Our test code passes the root node of a binary tree to the preOrder function.

Constraints

1 <=  Nodes in the tree  <= 500

Output Format

Print the tree's preorder traversal as a single line of space-separated values.

Sample Input

1
\
2
\
5
/  \
3    6
\
4
Sample Output

1 2 5 3 4 6```

### Solution :

```                            ```Solution in C :

In Java :

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

class Node {
int data;
Node left;
Node right;
}

*/

void Preorder(Node root) {
if (root == null) { return; }
System.out.print(root.data + " ");
Preorder(root.left);
Preorder(root.right);
}

In C ++ :

void Preorder(node *root) {
if (!root) return;
printf("%d ", root->data);
Preorder(root->left);
Preorder(root->right);
}

In C :

/* 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) {
if(root == NULL){
return;
}
else{
printf("%d ",root->data);
preOrder(root->left);
preOrder(root->right);
}
}

In python3 :

class node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None

self.left = node(val)

self.right = node(val)
"""
def parseInput(vals, root):
if vals:
val = vals.pop()
if val:
parseInput(vals, root.left)
if vals:
val = vals.pop()
if val:
parseInput(vals, root.right)
"""
n = int(input())
vals = list(map(int, input().split()))
#vals = [6, 5, 3, 0, 0, 2, 0, 0, 4, 1]
vals.reverse()
root = node(vals.pop())

#parseInput(vals, root)

if n == 6:
if n == 15:

#user code here:

"""
just implement the preorder method below.

root is of type node, which is defined as:

class node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
"""

def preorder(root):
if root:
print(root.val,end = ' ')
preorder(root.left)
preorder(root.right)

#end user code

preorder(root)```
```

## View More Similar Problems

Given a pointer to the head of a linked list, insert a new node before the head. The next value in the new node should point to head and the data value should be replaced with a given value. Return a reference to the new head of the list. The head pointer given may be null meaning that the initial list is empty. Function Description: Complete the function insertNodeAtHead in the editor below

## Insert a node at a specific position in a linked list

Given the pointer to the head node of a linked list and an integer to insert at a certain position, create a new node with the given integer as its data attribute, insert this node at the desired position and return the head node. A position of 0 indicates head, a position of 1 indicates one node away from the head and so on. The head pointer given may be null meaning that the initial list is e

## Delete a Node

Delete the node at a given position in a linked list and return a reference to the head node. The head is at position 0. The list may be empty after you delete the node. In that case, return a null value. Example: list=0->1->2->3 position=2 After removing the node at position 2, list'= 0->1->-3. Function Description: Complete the deleteNode function in the editor below. deleteNo

## Print in Reverse

Given a pointer to the head of a singly-linked list, print each data value from the reversed list. If the given list is empty, do not print anything. Example head* refers to the linked list with data values 1->2->3->Null Print the following: 3 2 1 Function Description: Complete the reversePrint function in the editor below. reversePrint has the following parameters: Sing