给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
由于数组是递增有序的,每次都在中间创建结点,类似二分查找的方法来间最小树。
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); } }
(016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)
原文地址:http://blog.csdn.net/xiaoliangsky/article/details/38935991