微软面试题_5
题目:怎样编写一个程序,把一个有序整数数组放到二叉树中?
分析:用对分法构建树,即序号为n/2处的元素作为根节点,剩余小的部分递归用对分法构建左子树,大的部分递归用对分法构建右子树。
private static TreeNode arrToBitree( int[] arr, int start, int end ) {int len = end - start + 1;if( len != 0 ) {int midPos = ( start + end ) / 2;/* 注意:中间点位置不是 len / 2 */TreeNode node = new TreeNode( arr[midPos] );node.left = arrToBitree( arr, start, midPos - 1 );node.right = arrToBitree( arr, midPos + 1, end );return node;} else {return null;}}