• 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;
    }

  • 相关阅读:
    数据库优化空间换时间优化
    sql server性能分析查询死锁和阻塞的sql语句
    修改储存过程所有者
    SQL Server 查看数据库基本信息
    SQL语句之普通行列转换
    Ext.Window
    小议操作符“^”与"&"的应用
    数据库设计名值模式(转)
    为数据库建立索引
    sql server性能分析检测数据库阻塞语句
  • 原文地址:https://www.cnblogs.com/flypie/p/4918878.html
Copyright © 2020-2023  润新知