zoukankan      html  css  js  c++  java
  • 二叉树

    数据结构 | 二叉树

    二叉树性质

    1. 第i层至多有2^(i-1)个结点
    2. 深度为k,总共2^k-1个结点
    3. 由n=n0+n1+n2,n=n1+2*n2+1联立,n2+1=n0
    4. n个结点的二叉树深度为log2(n)向下取整+1
    5. i=1,为根结点,i>1,i/2(C语言整数除法)为双亲
    6. 2*i<=n,左孩子2*i
    7. 2*i+1<=n,左孩子(2*i+1)

    先序创建&先序递归访问

    #include <stdio.h>
    #include <stdlib.h>
    typedef char Elemtype;
    typedef struct BiTNode
    {
    Elemtype data;
    struct BiTNode * lchild,*rchild;
    
    }BiTNode,*BiTree;
    //先序递归来输入,创建二叉树
    void Creat_BiTree(BiTree *T)//二级指针可以保证回传的根节点不变,同时二级指针可以改变一级指针
    {
        char ch;
        scanf("%c",&ch);//注意scanf规范
        if(ch==' ')
        (*T)=NULL;
        else
        {
            (*T)=malloc(sizeof(BiTNode));//第一次实际改变PT一级指针
            (*T)->data=ch;
            Creat_BiTree(&(*T)->lchild);
            Creat_BiTree(&(*T)->rchild);
        }
    
    }
    //访问操作
    void visit(char ch,int level)
    {
        printf("%c 位于第 %d 层
    ",ch,level);
    
    }
    
    void PreOrderTraverse(BiTree T ,int level)
    {
        if(T)
        {
        visit(T->data,level);
        PreOrderTraverse(T->lchild,level+1);
        PreOrderTraverse(T->rchild,level+1);
        }
    }
    int main()
    {
        int level=1;
        BiTree PT=NULL;
        Creat_BiTree(&PT);
        PreOrderTraverse(PT,level);//
        return 0;
    
    }
    

    情景:创建二叉树,填充字母,并显示对应的层数。
    C语言中引用二级指针可以很好地修改一级指针。

  • 相关阅读:
    微信支付
    微信分享
    微信获取用户
    js处理富文本编辑器转义、去除转义、去除HTML标签
    最新亲测能用的手机号码正则
    JS监听页面滚动到底部事件
    解决windows系统80端口被占用问题
    thinkphp5.0配置nginx重写规则
    php关于private、protected、public的区别
    centeros7远程访问mysql5.7
  • 原文地址:https://www.cnblogs.com/zuoanfengxi/p/13332229.html
Copyright © 2011-2022 走看看