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

    2020-02-23 

    今天学了一下BST

    有如下内容:

    二叉树的前序遍历:根->左->右;

        中序遍历:左->根->右;

        后序遍历: 左->右->根;

        层次遍历:广搜即可;

    前序遍历的第一个节点为根节点;

    后序遍历的最后一个节点为根节点;

    利用中序遍历可以得出每个节点的左右子树;

    因此,已知中序遍历+前序遍历//后序遍历可得到整个树;

    但如果是BST,只需要知道前序或者后序即可,因为平衡二叉树的特点,你找到了一个根节点,那么左子树都比它小,右子树都比它大;扫一遍前序遍历的序列就可以得到一个点的左右子树情况,递归处理即可;

    2020-02-23  22:27:28

    今天学了一下堆,大概是这么个东西;

    你如果想造一个优先队列:那怎么做呢?

    如果用BST来做,每次查找出优先级最大的点,复杂度log(n),那这样不断的取出队头的元素,会把树删得乱七八糟,最后访问可能就是o(n)的;那你说每次删掉平衡一下可以吗?有些麻烦;

    考虑用完全二叉树实现:

    最大堆:根节点为最大值;

    最小堆:根节点为最小值;

    插入:每次随便找个能放的位置放,然后调整,Olog(n)的复杂度;

    删除:每次把根删除,然后找个能放的子孙放进去,然后调整,log(n)

    建立堆:就是给个序列,随便建立一个完全二叉树,然后从下往上调整最终调整为堆,0(n),注意是边建立,边调整;

    未完待续;

    想的太多,做的太少;
  • 相关阅读:
    SpringBoot启动流程
    谈谈Java的线程池设计
    ReentrantReadWriteLock及共享锁的实现
    Condition的await()和signal()流程
    AbstractQueuedSynchronizer与ReentrantLock
    线程状态及各状态下与锁和CPU的关系
    Java运算符和表达式
    Java常量与变量
    jtl文件解析(jmeter+jenkins+python实现接口自动化)
    mac 增加/usr/bin目录的操作无权限
  • 原文地址:https://www.cnblogs.com/littlerita/p/12346809.html
Copyright © 2011-2022 走看看