前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法--二叉树

算法--二叉树

作者头像
潇洒
发布2023-10-20 10:34:17
2540
发布2023-10-20 10:34:17
举报
文章被收录于专栏:石头岛

树即经典实用,又非常有助于学习算法。

前言

二叉树是一个经典的数据结构,通过学习二叉树可以往后扩展学习更多类型的树。 这里要强调几点:

  1. 树是逻辑上定义的数据结构,哪怕只有一个节点也可以称之为树。
  2. 不要慌,二叉树实际上比你想像的要容易上手。

这篇文章先讲概念,再讲实现。

二叉树

二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质:

  1. 任意节点左子树不为空,则左子树的值均小于根节点的值;
  2. 任意节点右子树不为空,则右子树的值均大于于根节点的值;
  3. 任意节点的左右子树也分别是二叉查找树;
  4. 没有键值相等的节点;

不区分左右节点的值谁比谁大。 叶子节点:没有子节点的节点。 由于出版的问题,节点 和 结点 是一个意思。

二叉树五种状态

树的五种状态要这样理解:为了抽象出树的各种情况下树当时的状态,而进行的命名。实际上就是当前树被操作当前状态。

  1. 空树: 就是null,一般是在操作中删完了。
  2. 单节点树:只有一个根结点的二叉树
  3. 只有左子树
  4. 只有右子树
  5. 满二叉树:每一次结构都达到最大值。就是完美状态 总节点数=2^n-1,n 为层数。(等比数列求和)
  6. 完全二权树:叶子节点只能出现在最下层 和 次下层

形态展示

形态一 空树
代码语言:javascript
复制
(null)
形态二: 满二叉树

只有叶子节点多一个少一个就不是完全二叉树

形态三:完全二叉树

定义:左满,右不满,叶子节点只能出现在最下层 和 次下层

这也是完全二叉树,左满又不满。

这种就不是完全二叉树,酒红色节点在右边,所以不满足最左原则。

形态四 左子树

形态五 右子树

遍历二叉树

二叉树遍历 - 前序、中序、后序:时间复杂度是多少? 前序:先输出父节点 中序:先输出左子树,再输出父节点,右子树 后序:先输出左子树、右子树,最后父节点

关键就是看父节点的输出顺序。

不论前序、中序、后序 每个节点会访问一次且仅访一次,所以复杂度线性于节点总数,所以是O(n)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 二叉树
    • 二叉树五种状态
      • 形态展示
        • 形态一 空树
        • 形态二: 满二叉树
      • 形态三:完全二叉树
        • 形态四 左子树
          • 形态五 右子树
          • 遍历二叉树
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档