二叉树
来源:互联网 发布:pc端护眼软件 编辑:程序博客网 时间:2024/04/30 23:10
(1)二叉树的概念
在计算机领域,二叉树是每个节点最多有两个字数的结构。通常子树被称为左子树和右子树。
有如下特例
满二叉树
满二叉树是完全二叉树的特例。
(1)所有叶节点必须在同一层上
(2)除了叶子节点的所有节点都有两个子节点
完全二叉树
完全二叉树可以看成是满二叉树的最后一行右侧部分连续缺失
平衡二叉树
对于任何一个节点,左树和右树的绝对值差不超过1
(2)遍历
以如下例子说明
前序遍历
首先遍历根节点,然后是根节点的左侧节点,然后继续遍历左侧节点的左侧节点,…一直到最左边的叶节点。然后后退一层,访问右节点,然后继续后退一层。
简单来说就是先根节点,然后左节点,最后右节点。
A B C D E F G
中序遍历
从根节点开始找,如果根节点有左侧节点,就将寻找的指针向左侧移动。
首先是左节点,然后是根节点,最后是右节点
其实反过来更好理解。
任何一个右节点都不能被遍历如果有下列两者之一
(1)对应父节点没有被遍历
(2)对应的左节点没有被遍历
对于任何一个非叶节点都不能被遍历如果:
对应的左子节点没有被遍历。
C B D A E G F
注意,如果有多个节点符合被遍历的条件,离最后一个遍历点最近的点先被遍历。
后序遍历
首先是左节点,然后是右节点,最后是根节点
和上面的道理类似。
C D B G F E A
(3)应用
二叉排序树
(1)若左子树非空,则左子树的所有节点小于他的根节点
(2)若右子树飞控,则右子树的所有节点大于他的根节点
(3)左右子树也都是二叉排序树
显然排序二叉树可以用作排序,也可以用作快速查找和插入。一般来讲排序算法的时间复杂度为Nlog2N
查找算法的时间复杂度为log2N
0 0
- 二叉树、二叉堆
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- POJ 1742 Coins
- Android 面试总结
- HDU 1281 棋盘游戏-二分匹配
- Java正则表达式Matcher.group(int group)相关类解析
- POJ3181 Dollar Dayz
- 二叉树
- POJ 2253 Frogger
- POJ2993&&POJ2996
- 历史上的今天
- 正式开始的第一篇博客
- 【linux】Can't connect to MySQL server on 'XXX' (13)问题解决方式
- LINUX ROOT
- VMWare占用443端口,导致httpd服务器无法正常启动
- HDU 5787 K-wolf Number(数位DP)