二叉樹的鍊錶實現

2021-06-06 05:23:28 字數 1880 閱讀 4612

#ifndef _binarytree_h

#define _binarytree_h

#include #include #include using namespace std;

template class binarytree

node(type item, node *l=null, node *r=null):data(item),left(l),right(r){}

~node(){}

}; node *root;

struct stnode

};public:

binarytree():root(null){}

binarytree(const type& value)

~binarytree()

type getroot() const

type getleft() const

type getright() const

void maketree(const type &x, binarytree <, binarytree &rt)

void delleft()

void delright()

bool isempty() const

void clear()

int size() const

int height() const

void preorder() const

} void midorder() const

} void postorder() const

} void exchange()

} void leveltranverse()

} void createtree(type flag)

cout << "create completed! \n";

}private:

//遞迴求樹高

int height(node *t) const

} void clear(node *t)

//遞迴求樹大小

int size(node *t) const

//遞迴實現

/*void preorder(node *t) const

return;

}*///非遞迴實現

void preorder(node *t) const

} //遞迴實現

/*void midorder(node *t) const

}*///非遞迴實現

void midorder(node *t) const

else

} }//遞迴實現

/*void postorder(node *t) const

}*///非遞迴實現

void postorder(node *t) const

s.push(current);

if (current.timespop==1)

else

} }//左右子樹交換

void exchange(node *t)

return;

} //層次遍歷

void leveltranverse(node *t)

cout << endl;

return;

}};#endif//~_binarytree_h

#include "binarytree.h"

#include #include using namespace std;

int main()

二叉樹(二叉鍊錶實現)

二叉鍊錶結構的二叉樹模型,棧用自己寫的模版,佇列就不了 直接用stl的,不然 太長了 檔案 tree.h include include includeusing namespace std templateclass my stack templateclass node 結點類 node t d...

二叉鍊錶實現二叉樹

二叉樹的遍歷 前序遍歷,中序遍歷,後序遍歷,層序遍歷 二叉鍊錶的儲存實現 1 定義結構體,儲存二叉樹的結點資料,該結點的左兒子,右兒子。2 每乙個函式都要有乙個對應的私有成員 includeusing namespace std templatestruct binode templateclass...

二叉樹 鍊錶實現

include include typedef struct tree tree,ptree void init tree ptree root 初始化二叉樹 void creat tree ptree root 建立二叉樹 void pre order ptree root 先序遍歷 void b...