Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void fill_right_brother(TreeNode* root) {
- // root - самый левый на уровне,
- // у всех вершин уровня корректно заполнено поле right_brother
- for(;;) {
- TreeNode* left_node = nullptr;
- TreeNode* cur_node = nullptr;
- for (TreeNode* node = root; ;) {
- if (node->left) {
- if (cur_node)
- cur_node->right_brother = node->left;
- cur_node = node->left;
- if (!left_node) left_node = cur_node;
- }
- if (node->right) {
- if (cur_node)
- cur_node->right_brother = node->right;
- cur_node = node->right;
- if (!left_node) left_node = cur_node;
- }
- if (!node->right_brother)
- break;
- node = node->right_brother;
- }
- if (!left_node)
- break;
- root = left_node;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement