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;
    };
  • 相关阅读:
    AntvF2 踩坑及解决办法总结
    Swiper 禁止手动控制滑动
    cnpm run dev 报错 : Error: getaddrinfo ENOTFOUND localhost 解决
    vue项目px自动转rem
    用Vue简单实现自动全选
    使用node搭建静态资源服务器(1)
    node的模块机制
    什么是node
    女程序员的困惑
    Linux系统下node安装(mac命令行安装)
  • 原文地址:https://www.cnblogs.com/wulei0630/p/8663084.html
Copyright © 2011-2022 走看看