day 18: 102-binary-tree-level-order-traversal

This commit is contained in:
Kaushik Narayan R 2023-10-17 08:40:31 -07:00
parent 37153b50f1
commit 9ad7de8dd5
3 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,15 @@
#include "soln.hpp"
int main()
{
TreeNode n7 = TreeNode(7);
TreeNode n15 = TreeNode(15);
TreeNode n20 = TreeNode(20, &n15, &n7);
TreeNode n5 = TreeNode(5);
TreeNode n9 = TreeNode(9, &n5, nullptr);
TreeNode n3 = TreeNode(3, &n9, &n20);
vector<vector<int>> answer = {{3}, {9, 20}, {5, 15, 7}};
Solution soln;
cout << "Level-order traversal correct? " << soln.test(&n3, answer) << endl;
return 0;
}

View File

@ -0,0 +1,42 @@
#include "soln.hpp"
vector<vector<int>> Solution::levelOrder(TreeNode *root)
{
vector<TreeNode *> tree_queue;
vector<vector<int>> traversal;
if (root == nullptr)
{
return traversal;
}
TreeNode *current = root;
tree_queue.push_back(current);
while (!tree_queue.empty())
{
traversal.push_back(vector<int>());
for (auto node : tree_queue)
{
if (node != nullptr)
{
traversal.back().push_back(node->val);
}
}
int level_size = tree_queue.size();
for (int i = 0; i < level_size; i++)
{
if (tree_queue[0] != nullptr)
{
if (tree_queue[0]->left)
tree_queue.push_back(tree_queue[0]->left);
if (tree_queue[0]->right)
tree_queue.push_back(tree_queue[0]->right);
}
tree_queue.erase(tree_queue.begin());
}
}
return traversal;
}
bool Solution::test(TreeNode *root, vector<vector<int>> answer)
{
return levelOrder(root) == answer;
}

View File

@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
class Solution
{
public:
vector<vector<int>> levelOrder(TreeNode *root);
bool test(TreeNode *root, vector<vector<int>> answer);
};