二叉树


通常在一棵树中,树中的每个节点可能有任意数量的子节点。二叉树是普通树的一个特例,在二叉树中,每个节点至多有俩个子节点,其中一个成为左子节点,另外一个称为右子节点。

二叉树的属性


  1. 在非空二叉树中,第i层的结点总数不超过 2 ( i − 1 ) 2^(i-1) 2(i−1) , i>=1;
  2. 深度为h的二叉树最多有 2 h − 1 2^h-1 2h−1个结点(h>=1),最少有h个节点
  3. 对于任意一颗二叉树,如果其叶节点数为N0,而度数为2的节点总数为N2,则N0=N2+1;
  4. 具有n个节点的完全二叉树的深度为 [ l o g 2 n ] + 1 [log_2 n]+1 [log2​n]+1

二叉树的表现形式


可以使用两种形式来表示二叉树

二叉树的数组表现形式


二叉树存储在一个一维数组中,根节点位于索引为0的位置,然后从左到右从上到下对元素进行编号,即使元素为空,也存储在数组中。

将每个节点相对于树中的索引放入数组中。

二叉树的链式表现形式


使用链表的形式来存储二叉树,树中的每个节点包含三个字段,数据域、左节点指针域和右节点指针域。叶子节点的左右两个指针均指向NULL,表示树的末端。

二叉树的类型


  1. 严格二叉树 一颗二叉树,其内部每个节点都有零个或者两个子节点,即树中的每个节点的度为0或者2
  2. 完全二叉树 一颗二叉树,其内部每个节点恰好有两个子节点,且所有的叶节点都处于同一级
  3. 扩充二叉树 通过使用虚拟节点来替换所有NULL子树来构成扩充二叉树。生成的树是一颗完全二叉树,其中每个节点刚好有两个子节点,每个外部节点都是一个叶子
  4. 线索二叉树 在线索二叉树中,所有左侧为NULL的左指针都指向其有序的前置;所有右侧为NULL的指针均指向其有序的后继者。通过使用线索二叉树,使得树的遍历更加快速。

线索二叉树的两种变体

  1. 单线索二叉树 如果存在右指针为空的节点,使其指向有序的后继者
  2. 双线索二叉树 使其左右为NULL的指针分别指向有序的前驱和后继,此情况下,对于树的反向遍历是非常有用的

更多内容,欢迎访问:


二叉树(Binary Trees)相关推荐

  1. C#LeetCode刷题之#617-合并二叉树​​​​​​​​​​​​​​(Merge Two Binary Trees)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4096 访问. 给定两个二叉树,想象当你将它们中的一个覆盖到另一个 ...

  2. 17. Merge Two Binary Trees 融合二叉树

    [抄题]: Given two binary trees and imagine that when you put one of them to cover the other, some node ...

  3. 由任意二叉树的前序遍历序列和中序遍历序列求二叉树的思想方法_算法与数据结构基础 - 二叉树(Binary Tree)...

    二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...

  4. Given two binary trees, write a function to check if they areequal or not.

    Given two binary trees, write a function to check if they areequal or not. Two binary trees are cons ...

  5. (数据结构基础)Among the following threaded binary trees (the threads are represented by dotted curves),……

    当年学这些的时候真的是苦于没有人讲,现在复习考研,我会见到这种题就写下来,学弟学妹们欢迎点个关注,最近也在创业想实习的可以找我联系:没看懂的话是我表述有问题,欢迎指出和私戳. Among the fo ...

  6. Rosalind第88题:Counting Rooted Binary Trees

    Problem As in the case of unrooted trees, say that we have a fixed collection of  taxa labeling the  ...

  7. 617.Merge Two Binary Trees(合并两棵树)

    Given two binary trees and imagine that when you put one of them to cover the other, some nodes of t ...

  8. LeetCode之All Possible Full Binary Trees(Kotlin)

    问题: A full binary tree is a binary tree where each node has exactly 0 or 2 children. Return a list o ...

  9. Tweaked Identical Binary Trees - Medium

    Determine whether two given binary trees are identical assuming any number of 'tweak's are allowed. ...

  10. LeetCode 617. Merge Two Binary Trees

    题目: Given two binary trees and imagine that when you put one of them to cover the other, some nodes ...

最新文章

  1. 白话hash和数字签名,保证你看得懂
  2. Android --- android.intent.action.MAIN 与 android.intent.category.LAUNCHER常用的几种情况
  3. js三元运算符_这些优化技巧可以避免我们在 JS 中过多的使用 IF 语句
  4. C语言字符串是否为pallindrome排列的算法(附完整源码)
  5. 5月份 Github 上最热的十个 Python 项目,从Debug工具到AI水军、量化交易系统。
  6. mysql point WKB格式 php 解析 unpack
  7. python从2 1 2 2 2 63_Python从零开始第三章数据处理与分析python中的dplyr(2)
  8. 2018中国年度AI评选揭晓!10大领航企业,50家明星公司,10佳投资机构
  9. poj 3335 Rotating Scoreboard - 半平面交
  10. python 读取并显示图片,用plt 同时显示多幅图像
  11. 推挽电源的基本工作原理、磁通不平衡问题及其解决方法
  12. etl全量增量抽取方式
  13. MOVS,LODS,CMPS,SCAS,STOS
  14. K8S 数据卷volumes之Secret
  15. 微信小程序 发布后强制更新版本 强制覆盖老版本
  16. Beijing's 798 Biennale Kicks Off With Controversy
  17. 知识更新越来越快,但是学习起来越来越困
  18. 消除警告(升级后block警告)
  19. 【课程总结】工程伦理学知识总结
  20. 21北京交通大学\北交软件专硕复试经验分享

热门文章

  1. 自编码器(autoencoder)了解一下
  2. js提交成功后,清空表单
  3. 【自建题库】c认证初级
  4. 红米android10参数,红米10x5g手机参数红米10x5g手机参数有哪些
  5. 阿里巴巴内部Java成长笔记,首次曝光!
  6. JAVA面试题100道
  7. linux永久开放端口
  8. 自助式拍照打卡签到活动,亚运地点拍照打卡活动,<h2>JavaScript ISO
  9. js分割thymleaf的字符串
  10. selenium - web 自动化测试