Skip to content

Instantly share code, notes, and snippets.

@shudza
Created February 1, 2015 21:40
Show Gist options
  • Save shudza/30ba101da1ba1289c9e0 to your computer and use it in GitHub Desktop.
Save shudza/30ba101da1ba1289c9e0 to your computer and use it in GitHub Desktop.
#include <iostream>
struct Node
{
int data;
struct Node *left, *right;
Node(int i){ data = i; left = right = 0; }
};
void print(Node * root){
std::cout << root->data <<" ";
}
void traverse_R(Node* root, int a){
if (root->left != 0 && root->right!=0)
traverse_R(root->left, 0);
if (root->right == 0 && root->left == 0 && a == 0) print(root);
if (root->right != 0)
traverse_R(root->right, a);
else if (root->left != 0)
traverse_R(root->left, a);
if (a) print(root);
}
void traverse_L( Node * root, int a){
if(a) print(root);
if (root->left != 0)
traverse_L(root->left,a);
else if (root->right != 0)
return traverse_L(root->right,a);
if (root->right != 0)
traverse_L(root->right, 0);
if (root->right == 0 && root->left == 0 && a == 0) print(root);
}
void traverse(Node* root){
if (root){
print(root);
if (root->left) traverse_L(root->left,1);
if (root->left) traverse_R(root->right,1);
}
}
void main()
{
struct Node *root = new Node(1);
root->left = new Node(2);
root->left->left = new Node(20);
root->left->right = new Node(3);
root->left->right->right = new Node(4);
root->left->right->right->left = new Node(5);
root->left->right->right->right = new Node(6);
root->right = new Node(14);
root->right->right = new Node(13);
root->right->right->right = new Node(21);
root->right->left = new Node(10);
root->right->left->left = new Node(9);
root->right->left->left->left = new Node(7);
root->right->left->left->right = new Node(8);
root->right->right->left = new Node(12);
root->right->right->left->right = new Node(11);
traverse(root);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment