首页投稿(暂停使用,暂停投稿)@IT·互联网

树与树的表示

2016-05-19  本文已影响787人  掷骰子的求

<big>编译环境:python v3.5.0, mac osx 10.11.4</big>
<big>前述内容:</big>

什么是树(Tree)

客观事物中许多事物存在层次关系,而这种分组层次管理机制有利于高效的查找。如:


树的定义

n(n>=0)个节点构成的有限集合

根据树的定义如下事例就不是树,因为:

树的基本术语

树的表示

对于一颗指定的树(如下),我们要怎样在计算机中表示它的信息呢?


由于树中的每个结点的度不统一,所以显然,首先我们想到的是结构体加链表的形式对其进行表示,如下图所示:

我们知道,当一棵树具有n个节点时,它具有n-1条边,而上述的表示方式则需要3n(因为树的度为3)个存储单元来存放树的边。这样一样,2n+1个存储单元就被浪费了。因此为了减少上述浪费,实际编码时我们一般采用儿子-兄弟的表示方法:

二叉树的表示

<big>二叉树是一个有穷结点集合,基本结构单元由一个包含结点元素左孩子右孩子指针的结构体组成。</big>

二叉树的重要性质

  1. 树的边数等于结点个数减一
  2. 二叉树只有度为零、一的结点,可以分别用n0,n1,n2表示。
  3. n0+n1+n2则为树结点个数,n11+n22**则为树的边树
  4. n0+n1+n2-1=n11+n22,即:n0=n2+1

二叉树的抽象数据数据类型

三种遍历方式:
  1. 先访问其根结点(即输出元素值)
  2. 再遍历其左子树
  3. 最遍历其右子树
  1. 先遍历其左子树
  2. 再访问其根结点(即输出元素值)
  3. 最后遍历其右子树
  1. 先遍历其左子树
  2. 再遍历其右子树
  3. 最后访问其根结点(即输出元素值)

二叉树的顺序存储结构( tree.py

二叉树的链式存储结构(tree_chain.py

包含结点元素、指向左孩子的指针和指向右孩子指针的结构体连接形成的链表结构。

二叉树的应用

源代码: JacobKam-GitHub

后续内容:

上一篇下一篇

猜你喜欢

热点阅读