zoukankan      html  css  js  c++  java
  • 二叉树数组表示法

    二叉树使用的结构声明:

         struct  tree

      {

         int data;

         int left;

         int right;

      };

      typedef struct  tree treenode;

      treenode  btree[N];

    用数组表示二叉树
    #include"iostream"
    using namespace std;

    struct tree //二叉树结构声明
    {
    int data;
    int left;
    int right;

    };
    typedef
    struct tree treenode;
    treenode btree[
    15];

    /*----创建二叉树---*/
    void createbtree( int *data,int len)
    {
    int level;
    int pos; //-1为左树,1是右树;
    int i;
    btree[
    0].data=data[0]; //创建树根结点
    for(i=1;i<len;i++)
    {
    btree[i].data
    =data[i];
    level
    =0;
    pos
    =0;

    while(pos==0)
    {
    /*-----比较是左还是右树----*/
    if(data[i]>btree[level].data)
    /*---右树是否有下一层数---*/
    if(btree[level].right!=-1)

    level
    =btree[level].right;
    else
    pos
    =-1; //右树
    else
    if(btree[level].left!=-1)
    level
    =btree[level].left;
    else
    pos
    =1; //左树



    }
    if(pos==1) /*------创建结点左右位置------*/

    btree[level].left
    =i; //连接左子树
    else
    btree[level].right
    =i; //连接右子树
    }
    }
    /*------------创建结构数组的二叉树状结构-----------*/
    /* -1 表示没有下一层数*/
    int main()
    {
    int data[10]={5,6,4,8,2,3,7,1,9};
    int i;

    for(i=0;i<15;i++) //初始化
    {
    btree[i].data
    =0;
    btree[i].left
    =-1;
    btree[i].right
    =-1;
    }
    createbtree(data,
    9);
    printf(
    " 左 数据 右\n");
    printf(
    "-----------------\n");
    for(i=0;i<15;i++)

    if(btree[i].data!=0)
    if(btree[i].data!=0)
    printf(
    "%2d:[%2d] [%2d] [%2d]\n",i,btree[i],left, btree[i].data,btree[i].right);
    }
  • 相关阅读:
    C#基础知识简单梳理
    knearest neighbor
    二叉查找树的实现
    Unix/Linux 那些系统启动后的进程
    Nginx反向代理IIS
    线程漫谈——线程同步之信号量和互斥量
    BtxCMS@B.T.X 项目及界面展示 [下载]
    MVC in MFC or WTL
    HTTP HTTPS WebService
    ASP.NET WebAPI RC 竟然不支持最常用的json传参
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/1883448.html
Copyright © 2011-2022 走看看