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

  • 相关阅读:
    saveField方法
    cake使用事务的方法
    css 中引用css的方法
    一次标准的关联查询
    try cath用处
    使用其他模型分页$data = $this>paginate('MerchantProductOrder');
    jquery 常用代码
    php 邮箱验证原理
    cake 分页一个典型的条件
    一次典型的查询
  • 原文地址:https://www.cnblogs.com/flypie/p/4918878.html
Copyright © 2011-2022 走看看