通过数组对二叉树进行遍历

在刷pat的时候经常遇到用数组进行存取二叉树,但是不会遍历二叉树(看来是我太菜了),原来数组存取的二叉树的遍历和普通的遍历基本相同,下面给出用数组存取二叉树的前序,中序和后序遍历。

#include
#include
using namespace std;
vector v(1000,-1);
int n;
void preorder(int index){
    if(index>=n)
        return ;
    printf("%d ",v[index]);
    preorder(index*2+1);
    preorder(index*2+2);
}
void inorder(int index){
    if(index>=n)
        return ;
    inorder(index*2+1);
    printf("%d ",v[index]);
    inorder(index*2+2);
}
void postorder(int index){
    if(index>=n)
        return ;
    postorder(index*2+1);
    postorder(index*2+2);
    printf("%d ",v[index]);
}
int main(){
    scanf("%d",&n);
    for(int i=0;i

你可能感兴趣的:(数据结构)