zoukankan      html  css  js  c++  java
  • C++ 二叉链表

    #include <iostream>

    using namespace std;

    #include "Status.h"

    typedef char TElemType;

    #include "BiTree.h"

    int main()

    {

     BiTree T;  

    CreateBiTree(T);

     cout<<"二叉树的深度为:"<<Depth(T)<<endl;  

     cout<<"二叉树中结点个数为:"<<NodeCount(T)<<endl;

     cout<<"二叉树中叶子结点个数为:"<<LeavesNodeCount(T)<<endl;

     cout<<"先序遍历:";  PreOrderTraverse(T);  cout<<" 中序遍历:";  

     InOrderTraverse(T);  

     cout<<" 后序遍历:";  

     PostOrderTraverse(T);  

     cout<<endl;

     return 0;

    }

    ---------*****Status.h******-------------

    #define TRUE 1

    #define FALSE 0

    #define OK 1

    #define ERROR 0

    #define INFEASIBLE -1

    #define OVERFLOW -2

    typedef int Status;

    ---------*****BiTree.h******--------------

    typedef struct BiTNode{

     TElemType data;    //结点数据域 

     struct BiTNode *lchild,*rchild;  //左右孩子指针

    }BiTNode,*BiTree;  

    void CreateBiTree(BiTree &T)

    {

     char ch;

     cin>>ch;

     if(ch=='#') T=NULL;

     else{  

      T=new BiTNode;  

      T->data=ch;  

      CreateBiTree(T->lchild);   

      CreateBiTree(T->rchild);

      }

    }

     int Depth(BiTree T)

    {

     if(T==NULL) return 0;

     else  {   

       int m=Depth(T->lchild);    

       int n=Depth(T->rchild);    

       if(m>n) return m+1;   

       else return n+1;

      }

    }

    int NodeCount(BiTree T)

    {

      if(T==NULL) return 0;

      else return NodeCount(T->lchild)+NodeCount(T->rchild)+1;

    }

    int LeavesNodeCount(BiTree T)

    {

       if(!T) return 0;  

       else if(!T->lchild&&!T->rchild) return 1;

       else return LeavesNodeCount(T->lchild)+LeavesNodeCount(T->rchild);

    }

    void PreOrderTraverse(BiTree T)

    {

       if(T)  {   cout<<T->data;   PreOrderTraverse(T->lchild);   PreOrderTraverse(T->rchild);  }

    }

    void InOrderTraverse(BiTree T)

    {

     if(T)  {   InOrderTraverse(T->lchild);   cout<<T->data;   InOrderTraverse(T->rchild);  }

    }

    void PostOrderTraverse(BiTree T)

    {

     if(T)  {   PostOrderTraverse(T->lchild);   PostOrderTraverse(T->rchild);   cout<<T->data;  }

    }

    态度成就高度,技术实现梦想
  • 相关阅读:
    985大学的部分课程链接
    SVD学习
    资源三:机器学习源代码
    资源二:计算机视觉,机器学习方面牛人网站链接
    资源一:计算机视觉,机器学习方面的论文和算法代码
    PHPCMS v9 分析(1)
    highcharts 配置选项
    highcharts 基本组成
    Jquery 代码性能改善
    非80端口的网站发布后外网访问的问题
  • 原文地址:https://www.cnblogs.com/YY-Xcode/p/4920069.html
Copyright © 2011-2022 走看看