Skip to content

Instantly share code, notes, and snippets.

@czheo
Last active January 12, 2017 19:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save czheo/92fafe0dd18e05d41d71e36bfd0b04e1 to your computer and use it in GitHub Desktop.
Save czheo/92fafe0dd18e05d41d71e36bfd0b04e1 to your computer and use it in GitHub Desktop.
#include <cstddef>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
};
void print_tree(TreeNode* root) {
TreeNode* node;
vector<int> result;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
node = q.front();
q.pop();
result.push_back(node->val);
if (node->right) q.push(node->right);
if (node->left) q.push(node->left);
}
for (vector<int>::iterator it = result.end()-1; it >= result.begin(); it--) {
cout << (*it) << ", ";
}
}
int main() {
TreeNode n1 = {1, nullptr, nullptr};
TreeNode n2 = {2, nullptr, nullptr};
TreeNode n3 = {3, nullptr, nullptr};
TreeNode n4 = {4, nullptr, nullptr};
TreeNode n5 = {5, nullptr, nullptr};
TreeNode n6 = {6, nullptr, nullptr};
TreeNode n7 = {7, nullptr, nullptr};
TreeNode n9 = {9, nullptr, nullptr};
TreeNode n10 = {10, nullptr, nullptr};
n1.left = &n2;
n1.right = &n7;
n2.left = &n3;
n2.right = &n4;
n4.left = &n9;
n4.right = &n10;
n7.left = &n5;
n7.right = &n6;
print_tree(&n1);
}
#include <cstddef>
#include <iostream>
#include <list>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
};
void traverse(list<TreeNode*> queue, list<int> &result) {
list<TreeNode*> next_q;
TreeNode *node;
while (!queue.empty()) {
node = queue.front();
queue.pop_front();
result.push_back(node -> val);
if (node->right) next_q.push_back(node->right);
if (node->left) next_q.push_back(node->left);
}
if (!next_q.empty()) traverse(next_q, result);
}
void print_tree(TreeNode* root) {
list<TreeNode*> queue;
list<int> result;
queue.push_back(root);
traverse(queue, result);
for (list<int>::reverse_iterator it = result.rbegin(); it != result.rend(); it++) {
cout << (*it) << ", ";
}
}
int main() {
TreeNode n1 = {1, nullptr, nullptr};
TreeNode n2 = {2, nullptr, nullptr};
TreeNode n3 = {3, nullptr, nullptr};
TreeNode n4 = {4, nullptr, nullptr};
TreeNode n5 = {5, nullptr, nullptr};
TreeNode n6 = {6, nullptr, nullptr};
TreeNode n7 = {7, nullptr, nullptr};
TreeNode n9 = {9, nullptr, nullptr};
TreeNode n10 = {10, nullptr, nullptr};
n1.left = &n2;
n1.right = &n7;
n2.left = &n3;
n2.right = &n4;
n4.left = &n9;
n4.right = &n10;
n7.left = &n5;
n7.right = &n6;
print_tree(&n1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment