實驗名稱:二叉樹的基本操作
實驗室名稱:丹青909
實驗台號:14
學生姓名: 陳佳龍
專業班級: 2015級1班
指導教師:於慧伶
實驗日期:2017-6-9
一、實驗目的1、
掌握二叉樹的儲存實現。 2、
掌握二叉樹的遍歷思想。 3、
掌握二叉樹的常見演算法的程式實現。
二、實驗儀器及環境:
pc計算機;windows xp作業系統、visual c++6.0、codeblocks 1、
#include
#include
#include
#include
#include
#include
using namespace std;
int leafcount=0;
typedef struct nodebitnode,*bitree;
void createbitree(bitree *bt){
char ch;
ch=getchar();
// cin>>ch;
if(ch!='@'){
*bt=(bitree)malloc(sizeof(bitnode));
(*bt)->data=ch;
createbitree(&((*bt)->lchild));
createbitree(&((*bt)->rchild));
else *bt=null;
void preorder(bitree bt){//先序
if(bt==null) return;
coutpreorder(bt->lchild);
preorder(bt->rchild);
void inorder(bitree bt){//中序
if(bt==null) return;
inorder(bt->lchild);
coutinorder(bt->rchild);
void postorder(bitree bt){//後序
if(bt==null) return;
postorder(bt->lchild);
postorder(bt->rchild);
coutvoid inorder2(bitree root){//非遞迴中序遍歷
stacks;
bitree p=root;
while(p!=null||!s.empty())
while(p!=null)
s.push(p);
p=p->lchild;
if(!s.empty())
p=s.top();
couts.pop();
p=p->rchild;
int depth(bitree root){
int ldepth,rdepth;
if(!root)
return 0;
else{
ldepth =depth(root->lchild)+1;
rdepth =depth(root->rchild)+1;
return max(ldepth,rdepth);
coutif(root!=null){
countleaf(root->lchild);
countleaf(root->rchild);
if(root->lchild==null&&root->rchild==null)
leafcount++;
void printfromtoptobottom(bitree t)
if(t == null)
return;
queuequeuetreenode;
queuetreenode.push(t);
while(!queuetreenode.empty())
bitree pnode = queuetreenode.front();
cout << pnode->data << " ";
queuetreenode.pop();
if(pnode->lchild != null)
queuetreenode.push(pnode->lchild);
if(pnode->rchild != null)
queuetreenode.push(pnode->rchild);
void display(bitree root) //顯示樹形結構
if(root!=null)
coutif(root->lchild!=null)
cout<<'(';
display(root->lchild);
if(root->rchild!=null)
cout<<',';
display(root->rchild);
cout<<')';
int main()
bitree bt;
int n;
cout<<"請按先序次序輸入二叉樹中結點的值,@表示空樹:"// cout<<"二叉樹的樹形顯示:"cout<<"先序遞迴遍歷二叉樹:"n=depth(bt);
coutleafcount=0;
countleaf(bt);
coutreturn 0;7、
建立二叉樹時注意空節點,注意先序,中序和後序的遞迴遍歷次序,非遞迴遍歷和層次遍歷時應用到之前學習的棧和佇列知識。
簽名: 年月日
二叉樹基本操作
tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...
二叉樹基本操作
一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...
二叉樹基本操作
include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...