p**********5 发帖数: 11 | 1 LeetCode convert sorted linked list to BST
小弟C++转学java,明明C++可过的程序,写成java就过不去了,求指点....
public class Solution {
public TreeNode convert(ListNode current, int start, int end)
{
if(start > end)
return null;
int mid = start + (end-start)/2;
TreeNode left = convert(current,start,mid-1);
TreeNode parent = new TreeNode(current.val);
parent.left = left;
current = current.next;
parent.right = convert(current,mid+1,end);
return parent;
}
public TreeNode sortedListToBST(ListNode head) {
// Start typing your Java solution below
// DO NOT write main() function
if(head == null)
return null;
ListNode current = head;
int len = 0;
while(current != null)
{
len++;
current = current.next; //是不是current是head的引用所以head也会
最终变成null?
}
return convert(head,0,len-1);
}
} | f*********g 发帖数: 110 | | l*******0 发帖数: 63 | 3 个人感觉是你传head进去是不行的。head本身是个值,你local改了也没用。要么你用
个全局变量,要么你用TreeNode curTail=new TreeNode[1]; curTail[0]=head;
然后把curTail传进去。接着,把你源代码里面所有的head改成curTail[0]应该就好了。
【在 p**********5 的大作中提到】 : LeetCode convert sorted linked list to BST : 小弟C++转学java,明明C++可过的程序,写成java就过不去了,求指点.... : public class Solution { : public TreeNode convert(ListNode current, int start, int end) : { : if(start > end) : return null; : int mid = start + (end-start)/2; : TreeNode left = convert(current,start,mid-1); : TreeNode parent = new TreeNode(current.val);
| b*****n 发帖数: 618 | 4 java只有值传递,c++的引用不等价于java的引用
你用C++的引用传递是不行的 |
|