通過陣列對二叉樹進行遍歷
阿新 • • 發佈:2019-01-26
在刷pat的時候經常遇到用陣列進行存取二叉樹,但是不會遍歷二叉樹(看來是我太菜了),原來陣列存取的二叉樹的遍歷和普通的遍歷基本相同,下面給出用陣列存取二叉樹的前序,中序和後序遍歷。
#include<cstdio> #include<vector> using namespace std; vector<int> 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<n;i++) scanf("%d",&v[i]); preorder(0); printf("\n"); inorder(0); printf("\n"); postorder(0); return 0; }