(016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)
给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树。
因为数组是递增有序的。每次都在中间创建结点,类似二分查找的方法来间最小树。
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); } }实际上就是二分查找树。
。。