leetcode 117 —— Populating Next Right Pointers in Each Node II
2015-08-10 16:57
639 查看
Follow up for problem "Populating Next Right Pointers in Each Node".
What if the given tree could be any binary tree? Would your previous solution still work?
Note:
You may only use constant extra space.
For example,
Given the following binary tree,
After calling your function, the tree should look like:
思路:BFS
class Solution {
public:
void connect(TreeLinkNode *root) {
if (!root) return;
queue<TreeLinkNode*> que;
que.push(root);
int cur = 1;
int nex = 0;
while (!que.empty()){
while (cur--){
TreeLinkNode* p = que.front();
que.pop();
if (p->left){
que.push(p->left);
nex++;
}
if (p->right){
que.push(p->right);
nex++;
}
if (cur == 0) //当前层的最后一个节点
p->next = nullptr;
else
p->next = que.front();
}
cur = nex;
nex = 0;
}
}
};
What if the given tree could be any binary tree? Would your previous solution still work?
Note:
You may only use constant extra space.
For example,
Given the following binary tree,
1 / \ 2 3 / \ \ 4 5 7
After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ \ 4-> 5 -> 7 -> NULL
思路:BFS
class Solution {
public:
void connect(TreeLinkNode *root) {
if (!root) return;
queue<TreeLinkNode*> que;
que.push(root);
int cur = 1;
int nex = 0;
while (!que.empty()){
while (cur--){
TreeLinkNode* p = que.front();
que.pop();
if (p->left){
que.push(p->left);
nex++;
}
if (p->right){
que.push(p->right);
nex++;
}
if (cur == 0) //当前层的最后一个节点
p->next = nullptr;
else
p->next = que.front();
}
cur = nex;
nex = 0;
}
}
};
相关文章推荐
- leetcode 116 —— Populating Next Right Pointers in Each Node
- NodeJS之Mac初体验
- Count Complete Tree Nodes
- Mac上的Node安装及npm的使用
- leetCode #237 Delete Node in a Linked List
- dfs.datanode.max.xcievers&dfs.datanode.max.transfer.threads介绍
- Ubuntu 14.10 下NodeJS Cannot find module 'npmlog'
- 【LeetCode】19 - Remove Nth Node From End of List
- Leetcode: Count Complete Tree Nodes
- nodejs中文件,目录的操作(1)
- Delete Node in a Linked List
- LeetCode 19 Remove Nth Node From End of List
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 一张地图,告诉你NodeJS命令行调试器语句
- nodejs truncate
- node.js中同步和异步共同使用时应额外注意
- node.js文件拷贝(复制)
- [leetcode 237]Delete Node in a Linked List
- nodejs与Promise的思想碰撞
- [LeetCode]Delete Node in a Linked List