二叉树的层次遍历。
对于每一层,依次把各节点连起来即可。
代码:
void connect(TreeLinkNode *root) {
if (!root) return; queue<TreeLinkNode *> parents; parents.push(root);
while (!parents.empty()) {
queue<TreeLinkNode *> children; while (!parents.empty()) {
TreeLinkNode *p = parents.front();
parents.pop();
p->next = parents.empty() ? NULL : parents.front();
if (p->left)
children.push(p->left);
if (p->right)
children.push(p->right);
}
parents = children;
}
}