(2) 一棵完全二叉树以顺序方式存储,设计一个递归算法,对该完全二叉树进行中序遍历。
代码:
#include<iostream> using namespace std; const int MaxSize = 100; template <class T> class SeqTree { public: SeqTree() { length=0; } SeqTree(T a[],int n); ~SeqTree() { } void SeqInOrder(int i); private: int length; T node[MaxSize]; }; template <class T> SeqTree<T>::SeqTree(T a[],int n) { if(n-1>MaxSize) { throw 'y'; } for(int i=0;i<n;i++) { node[i]=a[i]; } } template <class T> void SeqTree<T>::SeqInOrder(int i) { if(i==0) return; else { if(2*i<=node[0]) SeqInOrder(2*i); else SeqInOrder(0); cout<<node[i]<<" "; if(2*i+1<=node[0]) SeqInOrder(2*i+1); else SeqInOrder(0); } } int main() { char A[]={10,'A','B','C','D','E','F','G','H','I','J'}; try { cout<<"完全二叉树中序遍历为:"; SeqTree<char> ST(A,sizeof(A)/sizeof(char)); ST.SeqInOrder(1); } catch (char e) { cout<<"空间不足,溢出!"; return 0; } return 0; }