zoukankan      html  css  js  c++  java
  • 树、二叉树、查找算法总结

    一、思维导图

    二、重要概念笔记

    1.哈希表的构造:

    哈希函数:

    除留余数法:h(k)=m%p(p取小于m的最大素数)

    哈希冲突的解决方法:

    拉链法:所有有冲突的元素在一条链表上。
    开放定址法:
    线性探测法:冲突发生时,顺序查看表中下一单元,直到找出一个空单元或查遍全表。
    二次探查法:冲突发生时,在表的左右进行跳跃式探测,比较灵活。

    2.二叉树的性质

    1:深度为k的二叉树至多有2^k-1个结点(k>=1)。
    2:在二叉树的第i层上至多有2^i-1个结点(i>=1)。
    3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
    4:具有n个结点的完全二叉树的深度为(log2n)+1。

    3.树的存储结构

    双亲表示法:当算法中需要在树结构中频繁地查找某结点的父结点时,使用双亲表示法最合适。
    孩子表示法:适用于查找孩子结点。
    孩子兄弟表示法:方便实现树和二叉树的相互转换。

    4.二叉树的层次遍历

    void Levelorder(BiTree BT) {
        BiTree p;
        BTqueue q;
        int i = 0;
        if (BT == NULL) {
            cout << "NULL";
            return;
        }
        Crequeue(q);
        Enqueue(q, BT);
        while (!Emptyqueue(q)) {
            Dequeue(q, p);
            if (i)cout << " ";
            i = 1;
            cout << p->data ;
            if (p->lchild != NULL) {
                Enqueue(q, p->lchild);
            }
            if (p->rchild != NULL) {
                Enqueue(q, p->rchild);
            }
        }
    }
    

    三、疑难问题及解决方案

    二叉排序树的删除操作:

    void DeleteBST(BiTree& T, ElemType key) {
        if (T == NULL) return;
        else
        {
            if (key < T->data) return DeleteBST(T->lchild, key);
            else if (key > T->data) return DeleteBST(T->rchild, key);
            else Delete(T);
        }
    }
    void Delete(BiTree& T) {
        BiTNode* q;
        if (T->rchild == NULL) {
            q = T;
            T = T->lchild;
            free(q);
        }
        else if (T->lchild == NULL) {
            q = T;
            T = T->rchild;
            free(q);
        }
        else
            Delete1(T, T->lchild);
    }
    void Delete1(BiTree* T, BiTree& r) {
        BiTNode* q;
        if (r->rchild != NULL)
            Delete1(T, r->rchild);
        else {
            T->data = r->data;
            q = r;r = r->lchild;
            free(q);
        }
    }
    
  • 相关阅读:
    EV录屏
    Oracle 游标详解 【转载至CSDN「鱼丸丶粗面」】
    ORACLE查询表数据占用存储空间大小(清理表碎片)
    开源项目
    Shiro 简介(认证、授权、加密、会话管理、与 Web 集成、缓存等)
    OSCHINA 公布 2019 年度最受欢迎中国开源软件
    腾讯开发者手册
    hutool JAVA 工具类
    小程序登录
    微信小程序button组件样式
  • 原文地址:https://www.cnblogs.com/2b-or-not-2b-/p/12781313.html
Copyright © 2011-2022 走看看