用先序方法建立一棵二叉树(用二叉链表存储),编写先序遍历、中序遍历、后序遍历程序,输出二叉树的遍历次序,与该二叉树的高度、全部结点数和叶子结点数。
#include#include #include using namespace std; typedef struct BiNode { char data; struct BiNode *lchild,*rchild; }BiTNode,*BiTree; typedef struct StackNode { BiTNode data; struct StackNode *next; }StackNode,*linkStack; int CreateBiTree(BiTree &T) { char ch; cin>>ch; if(ch=='#') { T=NULL; } else { T=new BiTNode; T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } void InOrderTraverse2(BiTree T) { if(T) { InOrderTraverse2(T->lchild); cout< data; InOrderTraverse2(T->rchild); } } void InOrderTraverse1(BiTree T) { if(T) { cout< data; InOrderTraverse1(T->lchild); InOrderTraverse1(T->rchild); } } void InOrderTraverse3(BiTree T) { if(T) { InOrderTraverse3(T->lchild); InOrderTraverse3(T->rchild); cout< data; } } int CountLeaf(BiTree T,int&count) { if(T) { if((!T->lchild)&&(!T->rchild)) count++; CountLeaf(T->lchild,count); CountLeaf(T->rchild,count); } return count; } int Depth(BiTree T) { int m,n; if(T==NULL) return 0; else { m=Depth(T->lchild); n=Depth(T->rchild); if(m>n) return (m+1); else return (n+1); } } int NodeCount(BiTree T) { if(T==NULL) return 0; else return NodeCount(T->lchild)+NodeCount(T->rchild)+1; } int main() { BiTree tree; int a=0; CreateBiTree(tree); InOrderTraverse1(tree); cout<<"n"; InOrderTraverse2(tree); cout<<"n"; InOrderTraverse3(tree); cout<<"n"; cout<



