今天主要学习了数据结构二叉树中的前,中,后序遍历,差别就是,根左右,左根右,左右根
都用递归思想即可求得
然后cf补提第三题发现是个数学找规律题,就是找那个数的平方根那个结点,看是x*x,还是x*(x+1),还是(x+1)*(x+1)得区间,x+y确定,要使x*y最小,最好的方法就是让x=y,就可想到平方根emmm
#include<bits/stdc++.h>
using namespace std;
char a[50][3];
int n;
//前序遍历为根左右
void f(char x)
{
if(x!='*')//不为空节点
{
cout<<x;
for(int i=0;i<n;i++)
{
if(a[i][0]==x)
{
f(a[i][1]);//左
f(a[i][2]);//右
}
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i][0]>>a[i][1]>>a[i][2];
}
f(a[0][0]);//开始递归
return 0;
}