LeetCode:116.填充每个节点的下一个右侧节点指针(Java语言)
原创
©著作权归作者所有:来自51CTO博客作者Lineage_的原创作品,请联系作者获取转载授权,否则将追究法律责任
原题链接
不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~
116.填充每个节点的下一个右侧节点指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
示例:
解题思路:
将根节点入队
只要他的左右孩子不为空,则将他的两个孩子入队
同时设置size,监控层序的位置,每到最后位置则将其next指针置为null
代码:
/**
*作者:魏宝航
*2020年11月26日,上午7:47
*/
class Solution {
public Node connect(Node root) {
if(root==null){
return null;
}
Queue<Node> list=new LinkedList<>();
list.add(root);
while(!list.isEmpty()){
int size=list.size();
for(int i=0;i<size;i++){
Node temp=list.poll();
if(i==size-1){
temp.next=null;
}
else{
temp.next=list.peek();
}
if(temp.left!=null){
list.add(temp.left);
}
if(temp.right!=null){
list.add(temp.right);
}
}
}
return root;
}
}
执行结果: