9#include <unordered_map>
37 const auto n = v.size();
39 assert(v[0].has_value());
41 auto root =
new TreeNode(v[0].value());
42 auto q = std::queue<TreeNode *>{};
47 auto node = q.front();
49 if (v[i].has_value()) {
50 node->left =
new TreeNode(v[i].value());
57 if (v[i].has_value()) {
58 node->right =
new TreeNode(v[i].value());
79 std::vector<std::optional<int>> result;
80 std::queue<TreeNode *> q;
88 result.emplace_back(node->
val);
92 result.emplace_back(std::nullopt);
97 while (!result.empty() && !result.back().has_value()) {
186 auto adjacencyList = std::unordered_map<int, std::vector<int>>{};
187 if (root ==
nullptr) {
188 return adjacencyList;
190 auto q = std::queue<TreeNode *>{};
193 auto node = q.front();
195 if (node->left !=
nullptr) {
196 adjacencyList[node->left->val].push_back(node->val);
197 adjacencyList[node->val].push_back(node->left->val);
200 if (node->right !=
nullptr) {
201 adjacencyList[node->right->val].push_back(node->val);
202 adjacencyList[node->val].push_back(node->right->val);
207 return adjacencyList;
Definition big_integer.hpp:14
static void delete_binary_tree(TreeNode *root)
Definition binary_tree.hpp:111
static TreeNode * new_binary_tree(const std::vector< std::optional< int > > v)
Definition binary_tree.hpp:32
static int get_binary_tree_depth(TreeNode *root)
Definition binary_tree.hpp:126
static void preorder(TreeNode *root, std::function< void(int)> func)
Definition binary_tree.hpp:153
static void postorder(TreeNode *root, std::function< void(int)> func)
Definition binary_tree.hpp:166
static void inorder(TreeNode *root, std::function< void(int)> func)
Definition binary_tree.hpp:140
static std::unordered_map< int, std::vector< int > > binary_tree_to_adjacency_list(TreeNode *root)
Definition binary_tree.hpp:185
static std::vector< std::optional< int > > binary_tree_to_vector(TreeNode *root)
Definition binary_tree.hpp:74
Definition binary_tree.hpp:12
TreeNode * right
Definition binary_tree.hpp:15
TreeNode()
Definition binary_tree.hpp:17
TreeNode * left
Definition binary_tree.hpp:14
TreeNode(int x)
Definition binary_tree.hpp:19
int val
Definition binary_tree.hpp:13
TreeNode(int x, TreeNode *left, TreeNode *right)
Definition binary_tree.hpp:21