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

116. Populating Next Right Pointers in Each Node

2016-12-14 10:03 351 查看
Given a binary tree

struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to
NULL
.

Initially, all next pointers are set to
NULL
.

Note:

You may only use constant extra space.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,

Given the following perfect binary tree,

1
/  \
2    3
/ \  / \
4  5  6  7

After calling your function, the tree should look like:

1 -> NULL
/  \
2 -> 3 -> NULL
/ \  / \
4->5->6->7 -> NULL


Subscribe to see which companies asked this question

木有啥,层序遍历,一开始觉得需要对最后一个节点进行特殊处理,想在for循环里直接忽视,然后在for循环外处理,最后发现如果这样的话第一次循环都没有办法进行辣。

其实直接判断是不是最后一个节点,如果是的话赋空就好啦。

class Solution {
public:
void connect(TreeLinkNode *root) {

queue<TreeLinkNode*> q;
if(root) q.push(root);

while(!q.empty()){
int size=q.size();
for(int i=0;i<size;++i){
TreeLinkNode *cur=q.front();
q.pop();
cur->next=(i==size-1)?NULL:q.front();
if(cur->left) q.push(cur->left);
if(cur->right) q.push(cur->right);
}

}

return ;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: