Skip to content

Instantly share code, notes, and snippets.

@dgodfrey206
Last active March 26, 2022 17:37
Show Gist options
  • Save dgodfrey206/b94da5afca25a2be1be1 to your computer and use it in GitHub Desktop.
Save dgodfrey206/b94da5afca25a2be1be1 to your computer and use it in GitHub Desktop.
Difference traversal methods
#include <iostream>
class Node
{
public:
Node(int data, Node* left = nullptr, Node* right = nullptr)
: data(data)
, left(left)
, right(right)
{ }
Node& setLeft(int n) { left = new Node(n); return *left; }
Node& setRight(int n) { right = new Node(n); return *right; }
int data{0};
Node* left;
Node* right;
};
void preorder(Node* node)
{
if (node)
{
std::cout << node->data << " ";
preorder(node->left);
preorder(node->right);
}
}
void inorder(Node* node)
{
if (node)
{
inorder(node->left);
std::cout << node->data << " ";
inorder(node->right);
}
}
void postorder(Node* node)
{
if (node)
{
postorder(node->left);
postorder(node->right);
std::cout << node->data << " ";
}
}
int main()
{
Node root(50);
auto& l = root.setLeft(25);
auto& r = root.setRight(75);
l.setLeft(1);
l.setRight(12);
r.setLeft(62);
r.setRight(100);
std::cout << std::boolalpha;
std::cout << "Preorder: ";
preorder(&root);
std::cout << "\nInorder: ";
inorder(&root);
std::cout << "\nPostorder: ";
postorder(&root);
}
@dgodfrey206
Copy link
Author

Preorder: 50 25 1 12 75 62 100
Inorder: 1 25 12 50 62 75 100
Postorder: 1 12 25 62 100 75 50

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment