树型结构基本概念

树是一种非线性结构,在大量数据进行操作时,线性结构操作速度相对较慢。数是一种很有用的抽象结构。来看下树的几个基本概念。

树上每个元素称之为节点,相邻两个元素间连接关系叫父子关系。没有父节点的元素是根节点,没有子节点的元素叫做叶子节点。一个节点最多只能由一个父节点。

节点的高度:节点到叶子节点的最长路径(该节点-> 叶子节点)

节点的深度:根节点到该节点经过的边数 (根节点 -> 该节点)。根节点的深度是0

树的高度:根节点的高度(根节点 -> 叶子节点)。所有的叶子节点的高度都是0

节点的层次:从根节点数,节点在第几次。

例下面的树:

在这里插入图片描述

树的高度是4(A->B->D->J)

B的深度是1

二叉树

二叉树是一种特殊的树形结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点

满二叉树

满二叉树是一种特殊的二叉树,它有如下几个特点:

  1. 所有非叶子节点都有两个子节点;
  2. 所有叶子节点都在同一层上;
  3. 深度为k的二叉树共有2^(k+1)-1个节点。

因此,满二叉树的节点数目是确定的,深度也是确定的。由于具有这些特点,满二叉树的性质很容易被应用到一些问题中,比如堆、哈夫曼编码等。

示例:深度为3的满二叉树。

        1
      /   \
     2     3
    / \   / \
   4   5 6   7
完全二叉树

对于除最后一层外,其他层的节点数都达到最大值,即除最后一层外的每一层都是满的,并且最后一层的节点都尽量靠左排列。

叶子节点都在最底下两层。最底层的叶子节点都靠左侧。除了最后一层其它层的节点个数都达到最大。

示例:一颗深度为4的完全二叉树。

        1
      /   \
     2     3
    / \   /
   4   5 6
  /
 7
二叉树的遍历

二叉树的遍历常见的有前序遍历、中序遍历和后续遍历。这三个遍历都是相对根节点来说的。

前序遍历:根节点 -> 左子节点 -> 右子节点

中序遍历:左子节点 -> 根节点 -> 右子节点

后续遍历:左子节点 -> 右子节点 -> 根节点

除了上面说的三种方式还有一种层序遍历。从根节点按节点所在层次依次遍历。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值