zoukankan      html  css  js  c++  java
  • 面试问题之数据结构与算法:二叉树

    一、树

      1、定义:

      树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。

      2、特点:

      (1)每个结点有零个或多个子结点

      (2)没有父节点的结点称为根结点

      (3)每一个非根结点有且只有一个父节点

      (4)除根结点外,每个子结点可以分为多个不相交的子树

    二、二叉树

      1、二叉树定义:

      二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:空树、只有根结点、只有左子树、只有右子树、同时拥有左右子树。

      2、二叉树的性质:

      性质1:二叉树第i层上的结点数目最多为2的i减1次方。

      性质2:深度为k的二叉树最多有2的k次方减1个结点

      性质3:包含n个结点的二叉树的高度至少为(log2 n)+1

    三、满二叉树、完全二叉树和二叉查找树

      1、满二叉树

      定义:高度为h,并且由2的h次方减1个结点组成的二叉树,称为满二叉树

      2、完全二叉树

      定义:一棵二叉树中叶子结点只出现在最下层和次下层,且最下层的叶子结点集中在树的左部,这样的二叉树称为完全二叉树。显然,一棵满二叉树必定是完全二叉树,而完全二叉树未必是满二叉树。

      3、二叉查找树

      (1)若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值

      (2)任意结点的右子树不为空,则右子树上所有结点的值均大于它的根结点的值

      (3)任意结点的左、右子树也分别为二叉查找树。

      (4)没有键值相等的结点

  • 相关阅读:
    spring源码阅读(一)
    多线程学习(十)
    多线程学习(九)
    多线程学习(八)
    多线程学习(七)
    多线程学习(六)
    多线程学习(五)
    多线程学习(四)
    matlab-table
    Matlab
  • 原文地址:https://www.cnblogs.com/yichengming/p/11451441.html
Copyright © 2011-2022 走看看