• 二叉树数组表示法


    二叉树使用的结构声明:

         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);
    }
  • 相关阅读:
    ssize_t与size_t的前世今生
    jQuery 中的事件参数传递机制
    链表的container_of 疑惑
    c 语言使用疑惑小记
    IQueryFilter的WhereClause详解
    给自己鼓励...
    什么是闭包,我的理解
    WCF 第五章 行为 为服务终结点行为实现一个消息检测器
    WCF 第五章 行为 事务之事务服务行为
    WCF 第四章 绑定 wsHttpBinding
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/1883448.html
Copyright © 2020-2023  润新知