思路:遍历过程是广度优先,采用两个队列queue1,queue2, queue1存储每一层待展开的节点,queue2存储queue1对应的下一层的节点,设置next值也在这一层展开。
class Solution {
public:
void connect(TreeLinkNode *root) {
if(root){
queue<TreeLinkNode *> que1,que2;
TreeLinkNode * curNode = root;
que1.push(curNode);
while(1){
if(que1.empty())break;
curNode = que1.front();
que1.pop();
if(curNode->left) que2.push(curNode->left);
if(curNode->right) que2.push(curNode->right);
if(que1.empty())
while(!que2.empty()){
curNode = que2.front();
que2.pop();
if(!que2.empty())
curNode->next = que2.front();
que1.push(curNode);
}
}
}
}
};
广度优先遍历二叉树
本文介绍了一种使用两个队列实现的广度优先遍历二叉树的方法。该方法通过交替使用两个队列来逐层遍历二叉树的节点,并将每一层的相邻节点连接起来。
412

被折叠的 条评论
为什么被折叠?



