二叉树数组存储结构实现

来源:互联网 发布:史诗音乐知乎 编辑:程序博客网 时间:2024/06/07 02:37

不是满二叉树的话非常浪费空间,一般就在堆排序中用了,写这个一般操作纯粹是因为坑爹的软设作业= =

#ifndef arrayBinaryTree_H_#define arrayBinaryTree_H_#define maxsize 1000#include <iostream>#include <stack>#include <cstdlib>#include <cstring>using namespace std;class arrayBinaryTree{private:    int num;    char node[maxsize];public:    arrayBinaryTree();    //~arrayBinaryTree();    void creat();    void preOrder();};arrayBinaryTree::arrayBinaryTree(){    cout<<"please input the num of the node(include the empty node)"<<endl;    cin>>num;}void arrayBinaryTree::creat(){    memset(node,'#',sizeof(node));    int i;    for(i=0; i<num; i++)    {        cin>>node[i];    }}void arrayBinaryTree::preOrder(){    int temp;    stack<int>S;    S.push(0);    while(!S.empty())    {        temp=S.top();        S.pop();        cout<<node[temp]<<" ";        int lchild=temp*2+1;        int rchild=temp*2+2;        if(node[rchild]!='#')            S.push(rchild);        if(node[lchild]!='#')            S.push(lchild);    }}#endif

测试:

#include <iostream>#include "arrayBinaryTree.h"using namespace std;int main(){    //input    //31    //A#B##CD####EF#G################    arrayBinaryTree test;    test.creat();    test.preOrder();    return 0;}