二叉树(Binary Trees)
二叉树
通常在一棵树中,树中的每个节点可能有任意数量的子节点。二叉树是普通树的一个特例,在二叉树中,每个节点至多有俩个子节点,其中一个成为左子节点,另外一个称为右子节点。
二叉树的属性
- 在非空二叉树中,第i层的结点总数不超过 2 ( i − 1 ) 2^(i-1) 2(i−1) , i>=1;
- 深度为h的二叉树最多有 2 h − 1 2^h-1 2h−1个结点(h>=1),最少有h个节点
- 对于任意一颗二叉树,如果其叶节点数为N0,而度数为2的节点总数为N2,则N0=N2+1;
- 具有n个节点的完全二叉树的深度为 [ l o g 2 n ] + 1 [log_2 n]+1 [log2n]+1
二叉树的表现形式
可以使用两种形式来表示二叉树
二叉树的数组表现形式
二叉树存储在一个一维数组中,根节点位于索引为0的位置,然后从左到右从上到下对元素进行编号,即使元素为空,也存储在数组中。
将每个节点相对于树中的索引放入数组中。
二叉树的链式表现形式
使用链表的形式来存储二叉树,树中的每个节点包含三个字段,数据域、左节点指针域和右节点指针域。叶子节点的左右两个指针均指向NULL,表示树的末端。
二叉树的类型
- 严格二叉树 一颗二叉树,其内部每个节点都有零个或者两个子节点,即树中的每个节点的度为0或者2
- 完全二叉树 一颗二叉树,其内部每个节点恰好有两个子节点,且所有的叶节点都处于同一级
- 扩充二叉树 通过使用虚拟节点来替换所有NULL子树来构成扩充二叉树。生成的树是一颗完全二叉树,其中每个节点刚好有两个子节点,每个外部节点都是一个叶子
- 线索二叉树 在线索二叉树中,所有左侧为NULL的左指针都指向其有序的前置;所有右侧为NULL的指针均指向其有序的后继者。通过使用线索二叉树,使得树的遍历更加快速。
线索二叉树的两种变体
- 单线索二叉树 如果存在右指针为空的节点,使其指向有序的后继者
- 双线索二叉树 使其左右为NULL的指针分别指向有序的前驱和后继,此情况下,对于树的反向遍历是非常有用的
更多内容,欢迎访问:
二叉树(Binary Trees)相关推荐
- C#LeetCode刷题之#617-合并二叉树(Merge Two Binary Trees)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4096 访问. 给定两个二叉树,想象当你将它们中的一个覆盖到另一个 ...
- 17. Merge Two Binary Trees 融合二叉树
[抄题]: Given two binary trees and imagine that when you put one of them to cover the other, some node ...
- 由任意二叉树的前序遍历序列和中序遍历序列求二叉树的思想方法_算法与数据结构基础 - 二叉树(Binary Tree)...
二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...
- 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 ...
- (数据结构基础)Among the following threaded binary trees (the threads are represented by dotted curves),……
当年学这些的时候真的是苦于没有人讲,现在复习考研,我会见到这种题就写下来,学弟学妹们欢迎点个关注,最近也在创业想实习的可以找我联系:没看懂的话是我表述有问题,欢迎指出和私戳. Among the fo ...
- 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 ...
- 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 ...
- 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 ...
- Tweaked Identical Binary Trees - Medium
Determine whether two given binary trees are identical assuming any number of 'tweak's are allowed. ...
- 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 ...
最新文章
- 白话hash和数字签名,保证你看得懂
- Android --- android.intent.action.MAIN 与 android.intent.category.LAUNCHER常用的几种情况
- js三元运算符_这些优化技巧可以避免我们在 JS 中过多的使用 IF 语句
- C语言字符串是否为pallindrome排列的算法(附完整源码)
- 5月份 Github 上最热的十个 Python 项目,从Debug工具到AI水军、量化交易系统。
- mysql point WKB格式 php 解析 unpack
- python从2 1 2 2 2 63_Python从零开始第三章数据处理与分析python中的dplyr(2)
- 2018中国年度AI评选揭晓!10大领航企业,50家明星公司,10佳投资机构
- poj 3335 Rotating Scoreboard - 半平面交
- python 读取并显示图片,用plt 同时显示多幅图像
- 推挽电源的基本工作原理、磁通不平衡问题及其解决方法
- etl全量增量抽取方式
- MOVS,LODS,CMPS,SCAS,STOS
- K8S 数据卷volumes之Secret
- 微信小程序 发布后强制更新版本 强制覆盖老版本
- Beijing's 798 Biennale Kicks Off With Controversy
- 知识更新越来越快,但是学习起来越来越困
- 消除警告(升级后block警告)
- 【课程总结】工程伦理学知识总结
- 21北京交通大学\北交软件专硕复试经验分享