zoukankan      html  css  js  c++  java
  • 二叉树基础知识

    1. 在二叉树的第 i 层上,至多有 2^(i - 1)个节点(i>=1)。
    2. 深度为k的二叉树至多有2^(k) - 1个 节点。
    3. 对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。
    4. 一棵深度为k且有2^k – 1 个结点的二叉树成为满二叉树。特点是每一层上的结点数都是最大结点数。
    5. 可以对满二叉树的结点进行连续编号,约定编号从根节点起,自上而下,自左至右。由此可引出完全二叉树的定义。深度为k的,有n个结点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称之为完全二叉树。
    6. 具有n个结点的完全二叉树的深度为(log n)↓ + 1。(↓ 为向下取整)。
    7. 如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i (1<i<n),有
      1. )如果 i = 1,则结点i是二叉树的根,无双亲。如果 i > 1,则其双亲是结点(i / 2)↓ 。
      2. )如果 2i > n,则结点i无左孩子(结点 i 为叶子节点);否则其左孩子为结点 2i。
      3. )如果 2i + 1 > n,则结点 i 无右孩子;否则其右孩子是结点 2i + 1。
    8. 二叉树的存储结构
      1. )二叉树既可以用顺序存储结构,即用一个数组来存储(参照满二叉树的标号,此种存储方式浪费空间);
      2. )也可以采用链式存储结构,链式最常用的为二叉链表,其次为三叉链表,前者非递归遍历的时候需要使用一个自设的栈,后者遍历的时候因存储结构中已存有遍历所需的足够信息,遍历过程中不需要另设栈。
        二叉树结构
    9. 二叉树的递归遍历
      1. )分为前序遍历,中序遍历,后续遍历三种。这里为中序遍历:
        递归遍历
    10. 二叉树的非递归遍历
      1. )方法1(中序遍历)
        非递归1
      2. 方法2(中序遍历)
        非递归2 
    11. 不论按照哪一种次序进行遍历,对含n个结点的二叉树,其时间复杂度均为o(n)。所需的辅助空间为遍历过程中栈的最大容量,即树的深度,最坏情况下为n,则空间复杂度也为o(n)。
  • 相关阅读:
    适合 C++ 新手学习的开源项目——在 GitHub 学编程
    原生JS封装常用函数
    C# 将excel文件导入到SqlServer数据库
    热配置的部署以及容易失败原因
    连接真机开发安卓(Android)移动app MUI框架 添加购物车等——混合式开发(四)
    标志寄存器06 零基础入门学习汇编语言59
    指针07 零基础入门学习C语言47
    标志寄存器05 零基础入门学习汇编语言58
    标志寄存器03 零基础入门学习汇编语言56
    标志寄存器04 零基础入门学习汇编语言57
  • 原文地址:https://www.cnblogs.com/younes/p/1794162.html
Copyright © 2011-2022 走看看