Created
September 5, 2019 07:27
-
-
Save clarkngo/f9f9048e57d7d5322b046a40b8ff6781 to your computer and use it in GitHub Desktop.
Tree Traversal for C++
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// C program for different tree traversals | |
#include <iostream> | |
using namespace std; | |
/* A binary tree node has data, pointer to left child | |
and a pointer to right child */ | |
struct Node | |
{ | |
int data; | |
struct Node* left, *right; | |
Node(int data) | |
{ | |
this->data = data; | |
left = right = NULL; | |
} | |
}; | |
/* Given a binary tree, print its nodes according to the | |
"bottom-up" postorder traversal. */ | |
void printPostorder(struct Node* node) | |
{ | |
if (node == NULL) | |
return; | |
// first recur on left subtree | |
printPostorder(node->left); | |
// then recur on right subtree | |
printPostorder(node->right); | |
// now deal with the node | |
cout << node->data << " "; | |
} | |
/* Given a binary tree, print its nodes in inorder*/ | |
void printInorder(struct Node* node) | |
{ | |
if (node == NULL) | |
return; | |
/* first recur on left child */ | |
printInorder(node->left); | |
/* then print the data of node */ | |
cout << node->data << " "; | |
/* now recur on right child */ | |
printInorder(node->right); | |
} | |
/* Given a binary tree, print its nodes in preorder*/ | |
void printPreorder(struct Node* node) | |
{ | |
if (node == NULL) | |
return; | |
/* first print data of node */ | |
cout << node->data << " "; | |
/* then recur on left sutree */ | |
printPreorder(node->left); | |
/* now recur on right subtree */ | |
printPreorder(node->right); | |
} | |
/* Driver program to test above functions*/ | |
int main() | |
{ | |
struct Node *root = new Node(1); | |
root->left = new Node(2); | |
root->right = new Node(3); | |
root->left->left = new Node(4); | |
root->left->right = new Node(5); | |
cout << "\nPreorder traversal of binary tree is \n"; | |
printPreorder(root); | |
cout << "\nInorder traversal of binary tree is \n"; | |
printInorder(root); | |
cout << "\nPostorder traversal of binary tree is \n"; | |
printPostorder(root); | |
cout << endl; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment