给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树。
因为数组是递增有序的。每次都在中间创建结点,类似二分查找的方法来间最小树。
struct TreeNode{ int data; TreeNode* leftChild; TreeNode* rightChild;};void newNode(TreeNode*& vNode, int vData){ vNode = new TreeNode; vNode->data = vData; vNode->leftChild = NULL; vNode->rightChild = NULL;}void creatMinBinTree(TreeNode*& vNode, int vData[], int vBgn, int vEnd){ if (vBgn <= vEnd) { int Mid = vBgn + (vEnd - vBgn)>>1; newNode(vNode, vData[Mid]); creatMinBinTree(vNode->leftChild, vData, vBgn, Mid-1); creatMinBinTree(vNode->rightChild, vData, Mid+1, vEnd); }}实际上就是二分查找树。
。。