由前序遍历和中序遍历重建二叉树
void reBuildTree(vector<int> pre, int begin1, int end1, \
vector<int> in, int begin2, int end2)
{
if (pre.size() != in.size())
return ;
int mid = begin2;
while (begin1 < end1)
{
mid++;
if (pre[begin1] == in[mid])
break;
}
reBuildTree(pre, begin1++, end1, in, begin2, mid - 1);
reBuildTree(pre, begin1++, end1, in, mid + 1, end2);
}
C语言模式实现C++继承和多态。 分析:C实现一个struct A和struct B各包含一个int成员a和b,要求达到B继承了A的效果,也就是B里面包含一个A。并且能达到多态的效果,也就是一个A*p指向A调的是A的函数,指向B调用的是B的函数。
typedef void(*FUNC);
struct A
{
FUNC f; //通过结构体的嵌套实现类之间的继承
int a;
};
struct B
{
A _a;
int b;
};
void funA()
{
printf("funA\n");
}
void funB()
{
printf("funB\n");
}
void fun(A* ptr)
{
ptr->f();
}
int main()
{
A a;
B b;
a.f = funA;
b._a.f = funB;
fun(&a);
fun((A*)&b);
system("pause");
return 0;
}