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

    ①二叉树的定义:二叉树是由n(n>=0)个结点组成的有限集合,该集合或者为空,或者是由一个根结点加上两颗分别称为左子树和右子树的、互不相交的二叉树组成

    ②二叉树的五种不同形态:

    ③满二叉树(Full Binary Tree):如果二叉树中的所有分支结点的度数都为二,且叶子结点都在同一层上,则称这类二叉树为满二叉树

    ④完全二叉树 (Complete Binary Tree):如果一个具有n个结点的高度为k的二叉树,它的每一个结点都与高度为k的满二叉树中的编号为1-n的结点一一对应,则称这颗二叉树为完全二叉树

    ⑤孩子兄弟表示法能够将任意形状的树转换为二叉树

    ⑥二叉树的深层性质

    性质1: 在二叉树的第i层最多有2i-1个结点(i>=1)

    性质2: 深度为k的二叉树最多有2k-1个结点(k>=0)

    性质3: 对任何一棵二叉树,如果其叶结点有n0个,度数为2的非叶结点有n2个,则: n = n + 1 

    性质4:具有n个结点的完全二叉树的高度为|log2n| + 1(|x|表示不大于x的整数)

    性质5:一棵有n个结点的二叉树(高度为|log2n| + 1),按层次对结点进行编号(从上到下,从左到右),对任意结点i有:

    如果i=1,则结点i是二叉树的根

    如果i>1,则其双亲结点为|i/2|

    如果2i<=n,则结点i的左孩子为2i

    如果2i>n,则结点i无左孩子

    如果2i+1<=n,则结点i的右孩子为2i+1

    如果2i+1>n,则结点i无右孩子

    ⑦指路法创建二叉树(非递归方式)

    1.指路法通过根结点与目标结点的相对位置进行定位,可以避开二叉树的递归性质而“线性”定位

    2.二叉树的存储结构

    结点指针域定义:

    typedef struct _BTreeNode BTreeNode;
    struct _BTreeNode
    {
        BTreeNode* left;
        BTreeNode* right;
    };

    头结点定义:

    typedef struct _BTree BTree;
    struct _BTree
    {
        int count;
        BTreeNode* root;
    };

    数据元素定义:

    struct Node
    {
        BTreeNode header;
        char v;
    };
  • 相关阅读:
    初识python 2.x与3.x 区别
    装饰器
    函数的进阶
    Spring Boot启动问题:Cannot determine embedded database driver class for database type NONE
    22.Spring Cloud Config安全保护
    23.Spring Cloud Bus 无法更新问题(踩坑) Spring cloud config server Could not fetch remote for master remote
    24.Spring Cloud之Spring Cloud Config及Spring Cloud Bus
    Spring Boot整合Spring Data Elasticsearch 踩坑
    项目中Spring Security 整合Spring Session实现记住我功能
    32.再谈SpringBoot文件上传
  • 原文地址:https://www.cnblogs.com/wulei0630/p/8663084.html
Copyright © 2011-2022 走看看