暴风影音2014校园招聘(长春站)

5.编写程序,把一个有序整数数组放到以整数为元素的二叉树中,生成一个平衡排序二叉树。设计并变成实现一种遍历方法,,是这种遍历方法的输出正好是输入数据的次序。
如数组 a:{1,2,3,4,5,6,7}
生成的二叉树:
4
/  \
2    6
/\    /\

1  3   5  7

#include<iostream>
#include <exception>

using namespace std;

struct node
{
	int value;
	node* left;
	node* right;
};

node* ConstructBinarySortTree(int *data, int left, int right)
{
	if (NULL==data || left>right)
	{
		return NULL;
	}

	int mid = left + (right-left)/2;
	node *pRoot = new node;
	pRoot->value = data[mid];
	pRoot->left = ConstructBinarySortTree(data, left, mid-1);
	pRoot->right = ConstructBinarySortTree(data, mid+1, right);

	return pRoot;
}

void InOrder(node *pRoot)
{
	if (NULL == pRoot)
	{
		return ;
	}

	InOrder(pRoot->left);
	cout<<pRoot->value<<endl;
	InOrder(pRoot->right);
}

int main()
{
	int Inorder[] = {1, 2, 3, 4, 5, 6, 7};
	int len = sizeof(Inorder) / sizeof(Inorder[0]);
	node* pRoot = ConstructBinarySortTree(Inorder, 0, len-1);
	InOrder(pRoot);

	system("pause");
	return 0;
}


你可能感兴趣的:(暴风影音2014校园招聘(长春站))