#include
#include
#define datatype char
#define maxsize 50
#define maxsize 50
int count=0;//統計葉子結點個數
int count1=0;//統計結點個數
typedef
struct nodebitnode,*bitree;
//佇列
typedef
structsequeue;
int emptyqueue(sequeue *sq)
sequeue *initqueue()
int inqueue(sequeue *sq,datatype x)
}int outqueue(sequeue *sq,datatype *x)
}datatype frontqueue(sequeue *sq,datatype *x)
typedef
structseqstack;
seqstack *init_seqstack()
int empty_seqstack(seqstack *s)
int push_seqstack(seqstack *s,bitree x)
}int pop_seqstack(seqstack *s,bitree *x)
}bitree top_seqstack(seqstack *s)
void createbitree(bitree *root)
}void printtree(bitree root,int h)
void preorder(bitree root)
}void inorder(bitree root)
}void postorder(bitree root)
}//先序非遞迴遍歷二叉樹
void preorder2(bitree root)
if(!empty_seqstack(s))}}
//中序非遞迴遍歷二叉樹
void inorder2(bitree root)
if(!empty_seqstack(s))
}}//後序非遞迴遍歷二叉樹
void postorder2(bitree root)
if(!empty_seqstack(s))
else p=p->rchild;
}}}
//求二叉樹的高度
int posttreedepth(bitree root)
}//統計二叉樹中的葉子結點個數並列印出(先序 )
void preorder_count(bitree root)
preorder_count(root->lchild);
preorder_count(root->rchild);
}}//統計二叉樹的結點個數(先序遍歷統計二叉樹中的結點數)
void preorder_count1(bitree root)
}//計算某一k層的葉子結點個數
int leafklevel(bitnode *b,int k)
if(b->rchild!=null)//右孩子進隊
if(front==last)//同層最右節點處理完畢,層數增1
if(level>k)//當層號大於k時返回leaf,不再繼續
return leaf;}}
//遞迴遍歷交換左右子樹
bitree exchange_rootfirlst(bitree t)
}return t;
}//按先序遍歷樹輸出節點及節點的層數
void preorderandlever(bitree root,int h)
} //按層遍歷二叉樹
void visitbyfloor(bitree root)
}根據先序序列和中序遍歷序列,建立二叉樹。輸出這棵二叉樹的後序遍歷序列。
bitnode* creatbypi(char *pre,char *in,int n)
pos=p-in;
s->lchild=creatbypi(pre+1,in,pos);
s->rchild=creatbypi(pre+pos+1,p+1,n-pos-1);
return s;
}//根據中序序列和後序序列,建立二叉樹。輸出這棵二叉樹的先序遍歷序列。
bitnode* creatbyip(char *in,char *post,int n)
pos=p-in;
s->lchild=creatbyip(in,post,pos);
s->rchild=creatbyip(p+1,post+pos,n-pos-1);
return s;
}//求出字串長度
int lengthofstring(char*s)
return count;
}int main()
二叉樹的應用 二叉樹遍歷的應用
在以上討論的遍歷演算法中,訪問結點的資料域資訊,即操作visite bt data 具有更一般的意義,需根據具體問題,對bt 資料進行不同的操作。下面介紹幾個遍歷操作的典型應用。search bt,x 在bt 為二叉樹的根結點指標的二叉樹中查詢資料元素x。查詢成功時返回該結點的指標 查詢失敗時返回空...
二叉樹應用
1 專案要求 建立一棵二叉樹 前序 中序 層次非遞迴遍歷該二叉樹 判斷該二叉樹是否為二叉排序樹 如果是二叉排序樹,進行結點的插入或刪除 輸出結果 2 解題思路 首先設計乙個結構體,確定需要輸入的資料型別,再設計乙個結構體,用來存放左右孩子的指標。輸入資料建立乙個二叉樹,首先輸入左子樹的資料,以 0 ...
二叉樹及其應用 二叉樹遍歷
給定二叉樹的廣義表表示,構造二叉樹並輸出二叉樹的四種遍歷順序。輸入說明 輸入僅一行,該行僅由 以及大小寫字元構成的二叉樹的廣義表表示,字串長度不超過100。輸出說明 在接下來的四行中依行輸出二叉樹的四種遍歷 輸入樣列 a b d,c e,f h 輸出樣列 abdcefh dbaecfh dbehfc...