您的位置:首页 > Web前端 > Node.js

LeetCode-Populating Next Right Pointers in Each Node

2013-09-01 13:11 453 查看
有点类似于层级遍历,用两个数组保存上下两层的结点即可!

同样的代码两道题目都可以过!

/**
* Definition for binary tree with next pointer.
* struct TreeLinkNode {
*  int val;
*  TreeLinkNode *left, *right, *next;
*  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
* };
*/
class Solution {
public:
void connect(TreeLinkNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<TreeLinkNode*> > level(2);
int pre = 0;
int cur = 1;
if (root == NULL) {
return;
}
level[cur].push_back(root);
while (!level[cur].empty()) {
pre = !pre;
cur = !cur;
level[cur].clear();
for (size_t i = 0; i < level[pre].size(); ++i) {
if (i == level[pre].size() - 1) {
level[pre][i]->next = NULL;
}
else {
level[pre][i]->next = level[pre][i + 1];
}
if (level[pre][i]->left != NULL) {
level[cur].push_back(level[pre][i]->left);
}
if (level[pre][i]->right != NULL) {
level[cur].push_back(level[pre][i]->right);
}
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: