zoukankan      html  css  js  c++  java
  • 二叉树相关面试题(一)

    1.  二叉树定义

        n个节点的有限集合,该集合或者为空集,

        或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成

    2.  二叉树特点

        3个节点的二叉树的5个形态

        A          A                    A                    A        A

       /  \        /        /         \         \

       B    C       B       B            B          B

                 /         \          /           \

                C          C        C            C

    3.  特殊二叉树

        斜树

          定义:所有节点都只有左子树的二叉树叫左斜树。所有节点都只有右子树的二叉树叫右斜树。

          特点:节点的个数和二叉树的深度相同;每一层只有一个节点。

        满二叉树

          一棵二叉树中,如果所有分支结构点都存在左子树和右子树,并且所有叶子都在同一层上,

          这样的二叉树称为满二叉树

        完全二叉树

          定义:对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中,

             编号从1至n的结点相等—完全二叉树

          特点:叶子节点只能出现在最下两层

             最下层的节点一定集中在左部连续位置

             倒数第二层,若雨叶子节点,一定都在右部连续位置

               如果结点度为1,则该结点只有左孩子,即不存在只有右子树的情况

               同样结点数的二叉树,完全二叉树的深度最小

        二叉查找树(二叉排序树)

          二叉排序树又称二叉搜索树,即在树的任何一个结点,都满足左子树小于根,根小于右子树。排序二叉树可以作为Map的关键码。

          主要的作用是快速的查找(相当于二分法)

        最优二叉树(哈夫曼树)

          带权路径长度最短的树。利用哈弗曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本

        平衡二叉树(AVL)

          一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树称为平衡二叉树

        红黑二叉树

          一种自平衡二叉查找树,在计算机科学中广泛使用到的一种数据结构。它是每个节点都带有颜色属性的二叉树,颜色分为红色或者黑色

          在二叉查找树强制一般要求以外,红黑树还有如下要求:

          1.节点是红色或黑色

          2.根是黑色

          3.每个叶节点都是黑色

          4.每个红色节点的两个子节点都是黑色

          5.从任一节点到每个叶子的所有路径都包含相同数目的黑色节点。

          这些约束强制了红黑树的关键性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是平衡的。

          因为操作比如插入、删除和查找某个值的最坏情况是都要求与树的高度成比例,时间复杂度为O(logn).这个在高度上的理论上限允许

          红黑树在最坏情况下都是高效的,而不同于普通的二叉查找树。

          最常用持久的数据结构之一,用于构造关联数组和集合。

  • 相关阅读:
    nginx-1.8.1的安装
    ElasticSearch 在3节点集群的启动
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
    LeetCode 501. Find Mode in Binary Search Tree (找到二叉搜索树的众数)
    LeetCode 437. Path Sum III (路径之和之三)
    LeetCode 404. Sum of Left Leaves (左子叶之和)
    LeetCode 257. Binary Tree Paths (二叉树路径)
    LeetCode Questions List (LeetCode 问题列表)- Java Solutions
    LeetCode 561. Array Partition I (数组分隔之一)
  • 原文地址:https://www.cnblogs.com/daimingming/p/3246107.html
Copyright © 2011-2022 走看看