關(guān)于二叉樹的練習2019-11-13

#include <iostream>
#include <string>
using namespace std;
typedef char ElemType;
typedef struct TNode{
    string data = "";
    TNode *lchild;
    TNode *rchild;
}TreeNode, *BiTree;

void createBiTree(BiTree *T){
    string ch;
    cin >> ch;
    if (ch == "#"){
        *T = NULL;
        return;
    }
    *T = new TreeNode;
    (*T)->data = ch;
    createBiTree(&(*T)->lchild);
    createBiTree(&(*T)->rchild);
}
int isEmpty(BiTree T){
    if (T == NULL)
        return 1;
    else
        return 0;
}
void traverseBiTree(BiTree T){
    if (isEmpty(T))
        return;
    cout << T->data << " ";
    traverseBiTree(T->lchild);
    traverseBiTree(T->rchild);
}
void inOrderBiTree(BiTree T){
    if (isEmpty(T))
        return;
    inOrderBiTree(T->lchild);
    cout << T->data << " ";
    inOrderBiTree(T->rchild);
}
void PostOrderBiTree(BiTree T){
    if (isEmpty(T))
        return;
    PostOrderBiTree(T->lchild);
    PostOrderBiTree(T->rchild);
    cout << T->data << " ";
}
int treeDeep(BiTree T){
    int deep = 0;
    if (isEmpty(T))
        return deep;
    int leftDeep = treeDeep(T->lchild);
    int rightDeep = treeDeep(T->rchild);
    deep = leftDeep > rightDeep ? leftDeep + 1 : rightDeep + 1;
    return deep;
}
int main(){
    BiTree T;
    createBiTree(&T);
    traverseBiTree(T);
    cout << endl;
    inOrderBiTree(T);
    cout << endl;
    PostOrderBiTree(T);
    cout << endl;
    cout << "樹深:" << treeDeep(T) << endl;
    system("pause");
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容