public class Solution {
public TreeNode sortedListToBST(ListNode head) {
if (head == null)
return null;
if (head.next == null)
return new TreeNode (head.val);
ListNode slow = head;
ListNode fast = head;
ListNode pre = null;
ListNode mid = null;
while (fast.next != null && fast != null){
pre = slow;
fast = fast.next.next;
slow = slow.next;
}
mid = slow;
pre.next = null;
TreeNode root = new TreeNode(slow.val);
root.right = sortedListToBST(mid.next);
root.left = sortedListToBST(head);
return root;
}
}
这是我的解决方案,但显示: java.lang.NullPointerException
当我改变时
while (fast.next != null && fast != null){
至
while (fast != null && fast.next != null){
解决方案被接受
我不知道它们之间的区别。
答案 0 :(得分:0)
&&
运算符的工作方式是...如果有条件(cond1 && cond2),则编译器将检查cond1是否为true ..如果为false,则不会检查第二个条件..它将仅在第一个条件为true时才检查第二个条件。..如果fast为null .. fast.next将给出null指针...因此,在检查fast.next之前,应始终检查fast是否为null ...