这道题目不知道重点在考察什么。
填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。 初始时,所有的next指针都为NULL 注意: 你只能使用常量级的额外内存空间 可以假设给出的二叉树是一个完美的二叉树(即,所有叶子节点都位于同一层,而且每个父节点都有两个孩子节点)。 例如:给出如下的完美二叉树
采用改进后的层次遍历写法,很快解决了这道题目。
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */ import java.util.Deque; import java.util.LinkedList; public class Solution { public void connect(TreeLinkNode root) { //不是很清楚这道题目考察的点是什么,为什么要特地强调常量级别额外的内存空间 if(root == null)return; if(root.left == null && root.right ==null)return; Deque<TreeLinkNode> queue = new LinkedList<>(); queue.offerLast(root); while(!queue.isEmpty()){ int size = queue.size(); for(int i=0; i< size; i++){//改进的层层遍历写法的关键点 TreeLinkNode head = queue.pollFirst(); if(head.left