⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rcssy.htm

📁 文章说明的程序设计
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>实验书写格式</title>
</head>

<body>

<p style="line-height: 150%">实验书写格式:<br>
&#11;标题:二叉树操作<br>
&#11;实验目的:<br>
          1。熟悉二叉树结点的结构和对二叉树的基本操作<br>
          2。掌握对二叉树每一种操作的具体实现<br>
          3。学会利用递归的方法编写对二叉树这种递归数据结构进行<br>
             处理的算法。<br>
&#11;实验内容:&nbsp;<br>
           &lt;抄上程序><br>
&#11;实验结果:<br>
          &lt;运行后屏幕上显示的所有交互性内容><br>
<br>
//程序(共三个文件):<br>
//文件名1:  btree1.h<br> 
<br> 
typedef char ElemType;<br> 
struct btreenode{<br> 
	 ElemType data;<br> 
	 btreenode* left;<br> 
	 btreenode* right;<br> 
};<br> 
class binarytree{<br> 
	btreenode* root;<br> 
public:<br> 
	binarytree(){root=NULL;}<br> 
	void createbtree(char * a);<br> 
	bool btreeempty(){return root==NULL;}<br> 
	void traversebtree(int mark);<br> 
	int btreedepth();<br> 
	int btreecount();<br> 
	int btreeleafcount();<br> 
	void printbtree();<br> 
	~binarytree();<br> 
<br> 
<br> 
};<br> 
<br> 
<br> 
//文件名2:  btree1.cpp<br> 
<br> 
#include &lt;stdlib.h><br> 
#include "btree1.h"<br> 
#include &lt;iostream.h><br> 
#include &lt;strstrea.h><br> 
<br> 
void create(btreenode* &amp;bt,char*a);<br> 
void traverse(btreenode* bt,int mark);<br> 
int depth(btreenode*bt);<br> 
int count(btreenode*bt);<br> 
int leafcount(btreenode*bt);<br> 
void print(btreenode*bt);<br> 
void deleteb(btreenode* bt);<br> 
void clear(btreenode* &amp;bt);<br> 
<br> 
<br> 
<br> 
void binarytree::createbtree(char *a)<br> 
{<br> 
	create(root,a);<br> 
}<br> 
void create(btreenode* &amp;bt,char*a)<br> 
{<br> 
	 btreenode* s[10];<br> 
	 int top=-1;<br> 
	 bt=NULL;<br> 
	 btreenode* p;<br> 
	 int k;<br> 
	 istrstream ins(a);<br> 
	 char ch;<br> 
	 ins>>ch;<br> 
	 while(ch!='@')<br> 
	 {<br> 
<br> 
		 switch(ch)<br> 
		 {<br> 
		 case'(':<br> 
			 top++;s[top]=p;k=1;break;<br> 
		 case')':<br> 
			 top--;<br> 
			 break;<br> 
		 case',':<br> 
			 k=2;<br> 
			 break;<br> 
		 default:<br> 
			 p=new btreenode;<br> 
			 p->data=ch;<br> 
			 p->left=p->right=NULL;<br> 
			 if(bt==NULL)bt=p;<br> 
			 else{<br> 
				  if(k==1)s[top]->left=p;<br> 
				  else s[top]->right=p;<br> 
			 }<br> 
		 }<br> 
		 ins>>ch;<br> 
	 }<br> 
}<br> 
void binarytree::traversebtree(int mark)<br> 
{<br> 
	traverse(root,mark);<br> 
}<br> 
<br> 
void traverse(btreenode*bt,int mark)<br> 
{<br> 
	if(mark==1){<br> 
		if(bt!=NULL){<br> 
			cout&lt;&lt;bt->data&lt;&lt;' ';<br> 
			traverse(bt->left,mark);<br> 
			traverse(bt->right,mark);<br> 
		}<br> 
	}<br> 
	else if(mark==2){<br> 
		if(bt!=NULL){<br> 
			traverse(bt->left,mark);<br> 
			cout&lt;&lt;bt->data&lt;&lt;' ';<br> 
			traverse(bt->right,mark);<br> 
		}<br> 
	}<br> 
	else if(mark==3){<br> 
		if(bt!=NULL){<br> 
			traverse(bt->left,mark);<br> 
			traverse(bt->right,mark);<br> 
			cout&lt;&lt;bt->data&lt;&lt;' ';<br> 
		}<br> 
	}<br> 
	else if(mark==4)<br> 
	{<br> 
		const maxlength=30;<br> 
		btreenode* q[maxlength];<br> 
		int front=0,rear=0;<br> 
		btreenode* p;<br> 
		if(bt!=NULL){<br> 
			rear=(rear+1)%maxlength;<br> 
			q[rear]=bt;<br> 
		}<br> 
		while(front!=rear)<br> 
		{<br> 
			front=(front+1)%maxlength;<br> 
			p=q[front];<br> 
			cout&lt;&lt;p->data&lt;&lt;' ';<br> 
			if(p->left!=NULL)<br> 
			{<br> 
				rear=(rear+1)%maxlength;<br> 
				q[rear]=p->left;<br> 
			}<br> 
			if(p->right!=NULL)<br> 
			{<br> 
				rear=(rear+1)%maxlength;<br> 
				q[rear]=p->right;<br> 
			}<br> 
		}<br> 
	}<br> 
	else{<br> 
		cerr&lt;&lt;"mark's value is useless!tranverse the tree is a failure!"&lt;&lt;endl;<br> 
		exit(1);<br> 
	}<br> 
}<br> 
<br> 
int binarytree::btreedepth()<br> 
{return depth(root);}<br> 
<br> 
int depth(btreenode*bt)<br> 
{<br> 
	if(bt==NULL)<br> 
		return 0;<br> 
	else<br> 
	{<br> 
		int dep1=depth(bt->left);<br> 
		int dep2=depth(bt->right);<br> 
		if(dep1>dep2)return dep1+1;<br> 
		else return dep2+1;<br> 
	}<br> 
}<br> 
<br> 
int binarytree::btreecount()<br> 
{<br> 
	return count(root);<br> 
}<br> 
<br> 
int count(btreenode*bt)<br> 
{<br> 
	if(bt==NULL) return 0;<br> 
	else<br> 
		return count(bt->left)+count(bt->right)+1;<br> 
}<br> 
<br> 
int binarytree::btreeleafcount()<br> 
{<br> 
	return leafcount(root);<br> 
}<br> 
<br> 
int leafcount(btreenode* bt)<br> 
{<br> 
	if(bt==NULL) return 0;<br> 
	else if(bt->left==NULL&amp;&amp;bt->right==NULL) return 1;<br> 
	else return leafcount(bt->left)+leafcount(bt->right);<br> 
}<br> 
<br> 
void binarytree::printbtree()<br> 
{<br> 
	print(root);<br> 
}<br> 
<br> 
void print(btreenode*bt)<br> 
{<br> 
	if(bt==NULL) return;<br> 
	else{<br> 
		cout&lt;&lt;bt->data;<br> 
		if(bt->left!=NULL||bt->right!=NULL)<br> 
		{<br> 
			cout&lt;&lt;'(';<br> 
			print(bt->left);<br> 
			if(bt->right!=NULL)<br> 
				cout&lt;&lt;',';<br> 
			print(bt->right);<br> 
			cout&lt;&lt;')';<br> 
		}<br> 
	}<br> 
}<br> 
<br> 
<br> 
binarytree::~binarytree()<br> 
{<br> 
	deleteb(root);<br> 
	root=NULL;<br> 
<br> 
}<br> 
void deleteb(btreenode* bt)<br> 
{<br> 
	if(bt!=NULL)<br> 
	{<br> 
		deleteb(bt->left);<br> 
		deleteb(bt->right);<br> 
<br> 
<br> 
		delete bt;<br> 
<br> 
	}<br> 
}<br> 
void clear(btreenode* &amp;bt)<br> 
{<br> 
<br> 
	deleteb(bt);<br> 
	cout&lt;&lt;bt&lt;&lt;endl;<br> 
	bt=NULL;&nbsp;<br>
	cout&lt;&lt;bt&lt;&lt;endl;<br>
}<br>
<br>
<br>
//文件名3:  btreemain1.cpp<br> 
<br> 
#include&lt;iostream.h><br> 
#include"btree1.h"<br> 
<br> 
void main()<br> 
{<br> 
binarytree bt;<br> 
<br> 
	char b[50];<br> 
	cout&lt;&lt;"输入以‘ @’字符作为结束符的二叉树广义表表示:"&lt;&lt;endl;<br> 
	cin.getline(b,sizeof(b));<br> 
<br> 
	bt.createbtree(b);<br> 
	bt.printbtree();<br> 
	cout&lt;&lt;endl;<br> 
	cout&lt;&lt;"preorder:";<br> 
    bt.traversebtree(1);cout&lt;&lt;endl;<br> 
	cout&lt;&lt;"inorder:";<br> 
	bt.traversebtree(2);cout&lt;&lt;endl;<br> 
	cout&lt;&lt;"post:";<br> 
	bt.traversebtree(3);cout&lt;&lt;endl;<br> 
	cout&lt;&lt;"level:";<br> 
	bt.traversebtree(4);cout&lt;&lt;endl;<br> 
	cout&lt;&lt;"the depth of binary tree:";<br> 
	cout&lt;&lt;bt.btreedepth()&lt;&lt;endl;<br> 
	cout&lt;&lt;"the number of the binary tree's points:";<br> 
	cout&lt;&lt;bt.btreecount()&lt;&lt;endl;<br> 
	cout&lt;&lt;"the leaf number:";<br> 
	cout&lt;&lt;bt.btreeleafcount()&lt;&lt;endl;<br> 
}<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
</p> 
 
</body> 
 
</html> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -