zoukankan      html  css  js  c++  java
  • C++实现对树的创建和前中后序遍历

    #include<iostream>
    #include<stdio.h>

    using namespace std;

    class BitNode
    {
    public:
    char data;
    BitNode * lchild;
    BitNode * rchild;
    };

    class BitTree
    {
    private:
    BitNode * pBase;
    public:
    BitTree()
    {
    CreateByPreOrder(pBase);
    }
    void show()
    {
    cout<<"前序遍历:"<<endl;
    PreOrderTraverse(pBase);
    cout<<endl<<"中序遍历:"<<endl;
    InOrderTraverse(pBase);
    cout<<endl<<"后序遍历:"<<endl;
    BackOrderTraverse(pBase);
    cout<<endl<<"深度为:"<<getTreeDeep(pBase)<<endl;
    }
    private:
    void CreateByPreOrder(BitNode * &pB)
    {
    char ch;
    if((ch=getchar())=='#')
    {
    pB=NULL;
    }
    else
    {
    pB=new BitNode;
    pB->data=ch;
    CreateByPreOrder(pB->lchild);
    CreateByPreOrder(pB->rchild);
    }
    }
    void PreOrderTraverse(BitNode * &pB)
    {
    if(pB)
    {
    cout<<pB->data;
    PreOrderTraverse(pB->lchild);
    PreOrderTraverse(pB->rchild);
    }
    }
    void InOrderTraverse(BitNode * &pB)
    {
    if(pB)
    {
    InOrderTraverse(pB->lchild);
    cout<<pB->data;
    InOrderTraverse(pB->rchild);
    }
    }
    void BackOrderTraverse(BitNode * &pB)
    {
    if(pB)
    {
    BackOrderTraverse(pB->lchild);
    BackOrderTraverse(pB->rchild);
    cout<<pB->data;
    }
    }
    int getTreeDeep(BitNode * &pB)
    {
    int deep=0;
    if(pB)
    {
    int lchildDeep=getTreeDeep(pB->lchild);
    int rchildDeep=getTreeDeep(pB->rchild);

    deep=lchildDeep>=rchildDeep?lchildDeep+1:rchildDeep+1;
    }
    return deep;
    }
    };

    int main()
    {
    BitTree bt;
    bt.show();
    return 0;
    }

  • 相关阅读:
    oracle Blob处理
    开机启动
    获取本机IP
    MSSQL通用分页过程
    转:Delphi2010小写金额转大写金额的源代码
    HWND Handle HModule区别
    常见问题
    Oracle ORA-01033: 错误解决办法
    lvs- lvs(DR模式)+keepalived
    lb-常用的负载均衡软件
  • 原文地址:https://www.cnblogs.com/flypie/p/4918878.html
Copyright © 2011-2022 走看看