只是近似。
/**
* 一个整数数组,近似转换成一颗平衡二叉树。
* 先排序,然后选取中位数,先序遍历
*
*/
public class BalanceTree {
public static Node balance(int[] a, int left, int right){
if(left == right){
return new Node(a[left]);
}
if(left > right){
return null;
}
int p = (left+right)/2;
Node parent = new Node(a[p]);
Node leftChild = balance(a, left, p-1);
Node rightChild = balance(a, p+1, right);
parent.left = leftChild;
parent.right = rightChild;
return parent;
}
/**
* @param args
*/
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9};
Node root = BalanceTree.balance(a, 0, a.length-1);
BFS.bfs(root);
}
}
3086

被折叠的 条评论
为什么被折叠?



