• 二叉树的顺序存储


    //二叉树的顺序存储结构
    #define
    MAX_TREE_SIZE 100 typedef int TElemType; TElemType Nil=0;//设整型以0为空 typedef TElemType SqBiTree[MAX_TREE_SIZE];//0号单元存储根结点

    未完,写作整理中。。。

     2018-11-14   22:19:09

    二叉树的性质:

    1,在二叉树的第i层上至多有2i-1个结点(i>=1)。

    ps:归纳法易证。

    2,深度为k的二叉树至多有2k-1个结点(k>=1)。

    3,n0=n2+1

    4,具有n个结点的完全二叉树的深度为[log2n](down)+1 

     二叉树的基本操作:

     

     

    /*初始化树*/

     

     1 int InitBiTree(SqBiTree T)
     2 {
     3     int i;
     4     for(i=0;i<MAX_TREE_SIZE;i++)
     5     {
     6         T[i]=Nil;
     7     }
     8     T[MAX_TREE_SIZE]='';    //给数组尾部加上结束标志
     9     return OK;
    10 }

     

     

    /*创建树*/

     1 int CreateBiTree(SqBiTree T)
     2 {
     3     int i=0;
     4     int l=0;
     5     char s[MAX_TREE_SIZE];
     6     printf("请按顺序输入结点的值,空格表示空结点,结点数<=%d
    ",MAX_TREE_SIZE);
     7     gets(s);
     8     l=strlen(s);//strlen("hello")返回的结果是5,是不包含字符串结尾处的‘’,
     9                 //但是strcpy(str1,str2),会拷贝str2中的‘’。
    10     for(;i<l;i++)
    11     {
    12         T[i]=s[i];
    13         if(i!=0&&T[(i+1)/2-1]==Nil&&T[i]!=Nil)
    14         {
    15             printf("出现无双亲且不是根的结点.
    ");
    16             return ERROR;
    17         }
    18     }
    19     /*for(;i<MAX_TREE_SIZE;i++)
    20     {
    21         T[i]=Nil;
    22     }*/
    23     return OK;
    24 }

    /*计算树的深度*/

    /*判断树是否为空*/

    BT数组中的下标与二叉树节点按层次遍历编号 如图:

    根节点与左右子树的编号规律:

    参考资料:https://www.cnblogs.com/zlspace/p/6831293.html

  • 相关阅读:
    贪心算法与动态规划
    Linux重要目录结构
    博客园添加目录索引
    冒泡排序&插入排序&其他排序
    Linux下部署自己写的Web项目
    Java算法入门-数组&链表&队列
    Java集合-数据结构之栈、队列、数组、链表和红黑树
    Java集合-单例模式斗地主&Collections类的shuffle方法了解
    什么是反向代理服务器
    Linux信号处理
  • 原文地址:https://www.cnblogs.com/wanwujiexu/p/9960775.html
Copyright © 2020-2023  润新知