【LeetCode每日一题】[中等]116. 填充每个节点的下一个右侧节点指针

【LeetCode每日一题】[中等]116. 填充每个节点的下一个右侧节点指针

116. 填充每个节点的下一个右侧节点指针

题目来源
算法思想:树,递归,队列,层次遍历

题目:
在这里插入图片描述
思路:与117解题思路一样,
117题解.

java代码

class Solution {
    
    
   public Node connect(Node root) {
    
    
		Queue<Node> queue = new LinkedList<Node>();//队列
		if(root == null) {
    
    
			return root;
		}
		queue.offer(root);//放入root节点
		//层次遍历
		while (queue.size() != 0) {
    
    
			int num = queue.size();//每层节点数量
			for (int i = 0; i < num; i++) {
    
    
				Node temp = queue.poll();//将节点拿出,
				temp.next = queue.peek();//节点的next指向同层下一个结点
				if(i == num - 1) {
    
    
					temp.next = null;//当前层的最后一个结点,其next为null
				}
				if(temp.left != null) {
    
    //如果左节点不为空,将其放入队列
					queue.offer(temp.left);
				}
				if(temp.right != null) {
    
    //如果右节点不为空,将其放入队列
					queue.offer(temp.right);
				}
			} 
		}
		//遍历结束,返回root
	    return root;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39457586/article/details/109097928
今日推荐