面试问题之数据结构与算法:二叉树

一、树

  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)没有键值相等的结点

原文地址:https://www.cnblogs.com/yichengming/p/11451441.html