把一个有序整数数组放到二叉树

来源:互联网 发布:云计算前景200字分析 编辑:程序博客网 时间:2024/05/18 03:05

对于有序数组,取中间节点作为根节点,将数组分成两部分,对数组的两部分递归构建左右子树,代码如下:

#include <iostream>using namespace std;struct TreeNode {int m_pData;TreeNode* m_pLeft;TreeNode* m_pRight;};void CreateTree(int *p, int len, TreeNode* &pHead){if(len > 0){pHead = new TreeNode;int mid = len / 2;pHead->m_pData = p[mid];pHead->m_pLeft = NULL;pHead->m_pRight = NULL;CreateTree(p,mid,pHead->m_pLeft);CreateTree(p+mid+1,len-mid-1,pHead->m_pRight);}else{pHead = NULL;}}void InOrder(TreeNode *pHead){if(pHead != NULL){InOrder(pHead->m_pLeft);cout<<pHead->m_pData<<" ";InOrder(pHead->m_pRight);}}int main(){int arr[] = {1,2,3,4,5,6,7,8,9,10};TreeNode *pHead = NULL;CreateTree(arr,sizeof(arr)/sizeof(arr[0]),pHead);InOrder(pHead);cout<<endl;return 0;}


0 0
原创粉丝点击