二叉树(Binary tree)--算法学习之路(一)
来源:互联网 发布:安智市场软件 编辑:程序博客网 时间:2024/06/04 18:14
二叉树是数据结构中一种重要的数据结构,也是树表家族最为基础的结构。
二叉树的定义:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
满二叉树和完全二叉树:
满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。也可以这样理解,除叶子结点外的所有结点均 有两个子结点。节点数达到最大值,所有叶子结点必须在同一层上。
满二叉树的性质:
1) 一颗树深度为h,最大层数为k,深度与最大层数相同,k=h;
2) 叶子数为2h;
3) 第k层的结点数是:2k-1;
4) 总结点数是:2k-1,且总节点数一定是奇数。
完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~(h-1)层) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。
注:完全二叉树是效率很高的数据结构,堆是一种完全二叉树或者近似完全二叉树,所以效率极高,像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能优化,二叉排序树的效率也要借助平衡性来提高,而平衡性基于完全二叉树。
二叉树的性质:
1) 在非空二叉树中,第i层的结点总数不超过2i-1, i>=1;
2) 深度为h的二叉树最多有2h-1个结点(h>=1),最少有h个结点;
3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
4) 具有n个结点的完全二叉树的深度为log2(n+1);
5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I>1,则其父结点的编号为I/2;
如果2I<=N,则其左儿子(即左子树的根结点)的编号为2I;若2I>N,则无左儿子;
如果2I+1<=N,则其右儿子的结点编号为2I+1;若2I+1>N,则无右儿子。
6)给定N个节点,能构成h(N)种不同的二叉树,其中h(N)为卡特兰数的第N项,h(n)=C(2*n, n)/(n+1)。
7)设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总和J=I+2i。
各位 小编今天第一次写博客 可能我理解的 知识 在某些地方相同,希望大家不要介意。因为都是在学习,都是在总结。希望大家谅解。谢谢各位。
- 二叉树(Binary tree)--算法学习之路(一)
- 【算法导论学习-24】二叉树专题2:二叉搜索树(Binary Search Tree,BST)
- 二叉树(binary tree)
- 二叉树(Binary Tree)
- 二叉树(binary tree)
- LeetCode OJ 之 Invert Binary Tree(反转二叉树)
- LeetCode OJ 之 Binary Tree Paths(二叉树路径)
- 二叉排序树(Binary Sort Tree,二叉查找树,二叉搜索树)--【算法导论】
- 【算法总结】Binary Tree & Binary Search Tree 二叉树
- 用二叉链表实现完全二叉树 (Linked Complete Binary Tree) 的实现(一)
- 二叉查找树(Binary Search Tree)
- 二叉查找树(Binary Search Tree)
- Binary Tree Traversals(二叉树)
- 二叉搜索树(binary search tree)
- 二叉搜索树(Binary Sort Tree)
- 线索二叉树(Threaded Binary Tree)
- 翻转二叉树(Invert Binary Tree)
- Invert Binary Tree(翻转二叉树)
- 纯html跨域访问java接口
- IDEA建空的项目(已有的项目架构)
- 用Tensorflow实现简单的KNN
- 输入三个数按从大到小排列
- 关于vue-cli + webpack打包给后台,部署上线
- 二叉树(Binary tree)--算法学习之路(一)
- 整理的优秀博客链接
- UE4 动画重定向之不同的骨骼共用同一套动画
- centos6.5网卡绑定,shell脚本
- vue项目中对axios的封装
- 移动端+微信小程序实现,手机端滑动分页代码思路
- 企业级负载平衡简介
- CronTrigger
- 1022. Digital Library (30) 字符串处理题