您的位置:首页 > 编程语言 > C语言/C++

对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。

2018-03-15 23:31 776 查看
typedef struct TNode {
int data;
TNode* left;
TNode* right;
TNode* next;
};

//时间复杂度为O(n),空间复杂度为O(n)
void addNext(TNode* root) {
if (!root) {
return;
}
queue<TNode*> q;
q.push(root);
while (!q.empty()) {
int levelLength = q.size();
TNode* first = NULL;
TNode* second = NULL;
while (levelLength) {
first = q.front();
q.pop();
if (first->left) {
q.push(first->left);
}
if (first->right) {
q.push(first->right);
}

if (--levelLength == 0) {
break;
}

second = q.front();

first->next = second;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言
相关文章推荐