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

    二叉树

    树也是基于结点的数据结构,但树里面的每个结点,可以含有多个链分别指向其他多个结点。

     

     

    谈论树的时候,我们会用到以下术语。
    •最上面的那一结点(此例中的“j”)被称为根。是的,图中的根位于树的顶端,请自行意会。
    •此例中,“j”是“m”和“b”的父结点,反过来,“m”和“b”是“j”的子结点。“m”又是“q”和“z”的父结点,“q”和“z”是“m”的子结点。
    •树可以分层。此例中的树有3层。

    基于树的数据结构有很多种,但本章只关注其中一种,二叉树。
    二叉树是一种遵守以下规则的树。
    •每个结点的子结点数量可为0、1、2。
    •如果有两个子结点,则其中一个子结点的值必须小于父结点,另一个子结点的值必须大于父结点。

    以下是一个二叉树的例子,其中结点的值是数字。

    注意,小于父结点的子结点用左箭头来表示,大于父结点的子结点则用右箭头来表示。

    查找

    二叉树的查找算法先从根结点开始。
    (1)检视该结点的值。
    (2)如果正是所要找的值,太好了!
    (3)如果要找的值小于当前结点的值,则在该结点的左子树查找。
    (4)如果要找的值大于当前结点的值,则在该结点的右子树查找。
    二叉树查找的时间复杂度是O(logN)

    插入

    有序数组查找需要O(logN),插入需要O(N),而二叉树都是只要O(logN)。当你估计应用会发生许多数据改动时,这一比较将有助你做出正确选择。

    删除

    删除操作遵循以下规则。
    •如果要删除的结点没有子结点,那直接删掉它就好。
    •如果要删除的结点有一个子结点,那删掉它之后,还要将子结点填到被删除结点的位置上。
    •如果要删除的结点有两个子结点,则将该结点替换成其后继结点。一个结点的后继结点,就是所有比被删除结点大的子结点中,最小的那个。
    •如果后继结点带有右子结点,则在后继结点填补被删除结点以后,用此右子结点替代后继结点的父节点的左子结点。
    O(logN)

    参考:数据结构与算法图解.12.1

  • 相关阅读:
    升级windows 11小工具
    windows 10更新升级方法
    您需要了解的有关 Oracle 数据库修补的所有信息
    Step by Step Apply Rolling PSU Patch In Oracle Database 12c RAC Environment
    Upgrade Oracle Database Manually from 12.2.0.1 to 19c
    如何应用版本更新 12.2.0.1.210420(补丁 32507738 – 2021 年 4 月 RU)
    xtrabackup 安装、备份和恢复
    Centos_Lvm expand capacity without restarting CentOS
    Centos_Lvm_Create pv vg lv and mount
    通过全备+relaylog同步恢复被drop的库或表
  • 原文地址:https://www.cnblogs.com/ooo0/p/12163011.html
Copyright © 2011-2022 走看看