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

  • 相关阅读:
    cart树剪枝
    LSA、LDA
    paddle中新增layer
    https://www.i5seo.com/
    打印机彩色打印设置(将彩色打印为黑色)
    办公文档的标准格式
    电脑常用的5个按键
    Win7各个版本之间的区别
    win7保护眼睛的颜色设置方法(85,125,205)
    详细教您台式电脑如何组装
  • 原文地址:https://www.cnblogs.com/flypie/p/4918878.html
Copyright © 2011-2022 走看看