• 数据结构(十九)二叉树的定义和性质


      一、二叉树的定义

      1.二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

      2.二叉树的特点:

    • 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。
    • 左子树和右子树是有顺序的,次序不能任意颠倒。
    • 即使树中某结点只有一颗子树,也要区分它是左子树还是右子树。

      3.二叉树具有五种基本形态:

    • 空二叉树
    • 只有一个根结点
    • 根结点只有左子树
    • 根结点只有右子树
    • 根结点既有左子树又有右子树

      4.特殊二叉树

      (1)斜树:所有的结点都只有左子树的二叉树叫左斜树,所有结点都是只有右子树的二叉树叫右斜树。

      (2)满二叉树:所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。

      (3)对一颗具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同,则这棵二叉树称为完全二叉树。

      二、二叉树的性质(注意,这里的i都是从0开始的

      1.在二叉树的第i层上至多有2^i个结点(i从0开始)。

      2.深度为k的二叉树至多有2^k -1个结点(k从1开始)。

      3.对任何一颗二叉树T,如果其终端节点树为n0,度为2的结点数为n2,则n0 = n2 +1(设度为1的结点数为n1,则结点总数为n=n0+n1+n2;又由于除了根结点外,每一个结点均对应一个进入它的分支,所以分支总数=n-1,又由于度为1的结点对应着1个从它引出的分支,度为2的结点对应着2个从它引出的分支,所以分支总数=n1+2*n2,即n-1=n1+2*n2)。

      4.具有n个结点的完全二叉树的深度为【log2 n】+1(【x】表示不大于x的最大整数)(深度为k的满二叉树的结点数n一定是2^k -1)

      5.如果对一颗有n个结点的完全二叉树(其深度为【log2 n】+1)的结点按层序编号(从第1层到第【log2 n】+1层,每层从左到右),对任一结点i(0<=i<=n-1)有:

    • 如果i=0,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点【(i-1)/2】
    • 如果2i+1>n,则结点i无左孩子;否则其左孩子是结点2i+1
    • 如果2i+2>n,则结点i无右孩子;否则其右孩子是结点2i+2
  • 相关阅读:
    默认构造函数
    Android笔记(二十八) Android中图片之简单图片使用
    Android笔记(二十七) Android中的动态广播和静态广播
    Android笔记(二十六) Android中的广播——BroadcastReceiver
    <转> Android LayoutInflater详解
    Android笔记(二十五) ListView的缓存机制与BaseAdapter
    Android笔记(二十四) Android中的SeekBar(拖动条)
    Android笔记(二十三) Android中的ProgressBar(进度条)
    Android笔记(二十二) Android中的GridView
    Android笔记(二十一) Android中的Adapter
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/9209446.html
Copyright © 2020-2023  润新知