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; } }
执行结果: