二叉树 Binary Tree

 在 计算机科学 中, 二叉树 是每个节点最多有两个 子树 树结构 。通常子树被称作“左子树”( left subtree )和“右子树”( right subtree )。二叉树常被用于实现 二叉查找树 二叉堆

树和二叉树的三个主要差别:

  1. 树的结点个数至少为1,而二叉树的结点个数可以为0;
  2. 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;
  3. 树的结点无左、右之分,而二叉树的结点有左、右之分。

<完全二叉树和满二叉树>

  1. 满二叉树:一棵深度为k,且有2^k-1个节点成为满二叉树
  2. 完全二叉树:深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中序号为1至n的节点对应时,称之为完全二叉树

FullBT CompleteBT.jpg

 Complete Binary TreeFull Binary Tree
总节点k2^{h-1}< k < 2^h-1k = 2^h-1
树高hh =  log_2k+1h = log_2(k+1)


前(先)序、中序、后序遍历


遍历二叉树:L、D、R分别表示遍历左子树、访问根结点和遍历右子树,则先(根)序遍历二叉树的顺序是 DLR ,中(根)序遍历二叉树的顺序是 LDR ,后(根)序遍历二叉树的顺序是 LRD 。还有按层遍历二叉树。这些方法的时间复杂度都是O(n),n为结点个数。


Bitree.JPG用二叉树表示下述表达式:a+b*(c-d)-e/f 
  • 先序遍历的串行是:-+a*b-cd/ef
  • 中序遍历的串行是:a+b*c-d-e/f
  • 后序遍历的串行是:abcd-*+ef/-

深度优先遍历

在深度优先级中,我们希望从根结点访问最远的结点。和图的深度优先搜索不同的是,不需记住访问过的每一个结点,因为树中不会有环。前序,中序和后序遍历都是深度优先遍历的特例。参见深度优先搜索

广度优先遍历

和深度优先遍历不同,广度优先遍历会先访问离根节点最近的节点。参见广度优先搜索。 二叉树的广度优先遍历又称按层次遍历。算法借助队列实现。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值