题目输入数据表示树的左儿子和右儿子,要求你输出先序遍历 中序遍历 后序遍历。
这里顺便复习一下这三种遍历。
PreOrder先序遍历 先从根节点->左儿子->右儿子
InOrder 中序遍历 左儿子->根节点->右儿子
PostOrder 后序遍历 左儿子->右儿子->根节点
之后贴上代码= 。 =


#include<iostream> using namespace std; int son[1000001][2]; int fs(int x) { cout<<x<<' '; //先输入当前的结点x之后空格 if(son[x][0]!=0) fs(son[x][0]); //如果当前结点左儿子不为空 那么递归左儿子 if(son[x][1]!=0) fs(son[x][1]); //如果当前结点右儿子不为空 那么递归右儿子 } int ms(int x) { if(son[x][0]!=0) ms(son[x][0]); //同上 左儿子不为空 就递归往左走 cout<<x<<' '; if(son[x][1]!=0) ms(son[x][1]); } int bs(int x) { if(son[x][0]!=0) bs(son[x][0]); if(son[x][1]!=0) bs(son[x][1]); cout<<x<<' '; } int main() { int n; //下面是输入数据 cin>>n; for(int i=1;i<=n;i++) { cin>>son[i][0]>>son[i][1]; //循环读入左儿子右儿子 } fs(1); //先序遍历 cout<<endl; ms(1); //中序遍历 cout<<endl; bs(1);//后序遍历 }