二叉树基本操作经典实例
- 格式:doc
- 大小:127.50 KB
- 文档页数:8
本程序由SOGOF完成
该完整程序主要是递归函数的使用及模板的使用,完成了对二叉树基本的链表操作,主要有二叉树的建立,前序、中序、后序遍历,求树的高度,每层结点数(包含树的最大宽度),左右结点对换,二叉树的内存释放,求解树的叶子数。
#include
using namespace std;
#define FLAG'#'
typedef char Record;
template
struct Binary_Node
{
Entry data;
Binary_Node
Binary_Node
Binary_Node();
Binary_Node(const Entry& x);
};
template
Binary_Node
{
left=NULL;
right=NULL;
}
template
Binary_Node
{
data=x;
left=NULL;
right=NULL;
}
template
class Binary_tree
{
public:
bool empty()const;
Binary_tree();
Binary_tree(Binary_tree
void create_tree(Binary_Node
void recursive_copy(Binary_Node
void pre_traverse(Binary_Node
void mid_traverse(Binary_Node
void post_traverse(Binary_Node
void count_node(Binary_Node
void count_leaves(Binary_Node
int tree_height(Binary_Node
void Ltree_To_Rtree(Binary_Node
void count_width(Binary_Node
int get_count()const;//得到树的结点数
Binary_Node
void destroy_tree(Binary_Node
Binary_tree
protected:
T*pre_visit;
T*mid_visit;
Binary_Node
int node_numb;
};
template
Binary_tree
{
root=NULL;
node_numb=0;
}
template
void
Binary_tree
if(tree==NULL)
{
return;
}
else
{
cur=new Binary_Node
node_numb++;
recursive_copy(tree->left,cur->left);
recursive_copy(tree->right,cur->right);
}
}
template
Binary_tree
recursive_copy(org.root,root);
}
template
Binary_tree
recursive_copy(org.root,root);
return *this;
}
template
bool Binary_tree
{
return root==NULL;
}
template
int Binary_tree
{
return node_numb;
}
template
void Binary_tree
{
T val;
cout<<"请输入数据,若空以#输入: ";
cin>>val;
tree=new Binary_Node
if(val==FLAG)
{
tree=NULL;
return;
}
else
{
node_numb++;
if(root==NULL)
root=tree;
create_tree(tree->left);
create_tree(tree->right);
}