一开始考虑的时候想错方向了,现在应该对了,多来点,哈哈这活也就是5、6行code, 没人敢接?![]()
public static Node decode(object[] data, int index, Node parent)
int nCap = data.length - 1;
if (nCap >index ) {
if (parent == null) {
parent= new Node();
}
parent.data = data[index];
parent.left = decode(data, index * 2 + 1, parent.left);
parent.right = decode(data, index * 2 + 2, parent.right);
return parent;
}
return null;
}
decode(new int[] {0,1,2,3,4,5,6,7,8,9,10,11,12,13}, 0, null);
一开始考虑的时候想错方向了,现在应该对了,多来点,哈哈
0 1 2 3 4 5 6 7 8 9 10 11 12 13
------------0
0
--------1-------2
0*2+1 0*2+2
------3---4----5---6
1*2+1 1*2+2 2*2+1 2*2+2
-----7-8-9-10-11-12-13
3*2+1 3*2+2 4*2+1 4*2+2 5*2+1 5*2+2 6*2+1 null
家里没java,没eclipse,有没有错不负责代码:public static Node decode(object[] data, int index, Node parent) int nCap = data.length - 1; if (nCap >index ) { if (parent == null) { parent= new Node(); } parent.data = data[index]; parent.left = decode(data, index * 2 + 1, parent.left); parent.right = decode(data, index * 2 + 2, parent.right); return parent; } return null; } decode(new int[] {0,1,2,3,4,5,6,7,8,9,10,11,12,13}, 0, null);
别提了,我一开始的想法是不用那么诡异的index的:blowzy:,后来在公司调试的时候还搞出了stackoverflow,直接放弃,去干正经事了
public static TreeNode convertArrayToTree(int arr[], int start, int end)
{
if (end < start) return null;
int mid = (start + end) / 2;
TreeNode n = new TreeNode(arr[mid]);
n.left = convertArrayToTree(arr, start, mid - 1);
n.right = convertArrayToTree(arr, mid + 1, end);
return n;
}
public static TreeNode createBST(int array[])
{
return convertArrayToTree(array, 0, array.length - 1);
}