九月 提交的代码
提交时间:2022年4月8日 22:18 语言:C++运行时间:4ms占用内存:269K
运行状态: Accepted
题目:二叉树遍历1161

大会员可查看代码,点此开通大会员

                
                    #include <bits/stdc++.h>
using namespace std;
typedef struct node{
    char data;
    struct node *lchild,*rchild;
}*BitTree;
string s;
int len;
//先序遍历的方式创建二叉树
void CreatBitTree(BitTree &T){
    if(len == s.size())
        return;
    char c=s[len++];
    if(c=='#') T=NULL;
    else{
            T=new node;
            T->data = c;
            T->lchild=NULL;
            T->rchild=NULL;
            CreatBitTree(T->lchild);
            CreatBitTree(T->rchild);
    }
}
//将二叉树按照先序输出
void PreOrderTraverse(BitTree T){
    if(T!=NULL){
        cout << T->data << ' ';
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}
//将二叉树按照中序输出
void InOrderTraverse(BitTree T){
    if(T!=NULL){
        InOrderTraverse(T->lchild);
        cout << T->data << ' ';
        InOrderTraverse(T->rchild);
    }
}
//将二叉树按照后序输出
void PostOrderTraverse(BitTree T){
    if(T!=NULL){
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        cout << T->data << ' ';
    }
}
//二叉树的叶子结点个数
int Leaf(BitTree T) {
    if(T==NULL) return 0;
    if(T->lchild == NULL && T->rchild == NULL) return 1;
    return Leaf(T->lchild)+Leaf(T->rchild);
}
//二叉树的深度
int Deepth(BitTree T) {
    if(T==NULL) return 0;
    int x = Deepth(T->lchild);
    int y = Deepth(T->rchild);
    return max(x,y)+1;
}
int main(){
    while(cin>>s){
        len=0;
        BitTree T;
        CreatBitTree(T);
        InOrderTraverse(T);
        cout << endl;
    }
    return 0;
}