美文网首页
树的基本概念和操作

树的基本概念和操作

作者: 空即是色即是色即是空 | 来源:发表于2017-11-24 23:19 被阅读13次

树(Tree)是n个结点的有限集。
在任意一棵非空树中:
(1) 有且仅有一个特定的称为跟(Root)的结点
(2) 当n > 1时,其余结点可以分为m(m > 0)个互不相交的有限集T1, T2,…,Tm,其中每一个集合本身又是一棵树,并且称为树的子树(SubTree)

由上可以看出,树的定义本身是递归定义的。

思考: 此处是否意味着树的某些操作可以递归来定义呢?

结点拥有的子树数称为结点的
度为0的结点称为叶子或终端结点
树的度是树内各结点的度的最大值
树中结点的最大层次称为树的深度高度

森林是m(m>0)棵互不相交的树的集合。
对树中每个结点而言,其子树的集合为森林。
森林和树相互递归地定义来描述树

一棵N个结点的树有N-1条边(因为除了root,其它结点都经由一条边出去)


任意的树都可以用儿子(一个结点指向第一个儿子)、兄弟(另一个结点指向下一个兄弟)表示法将其转变成二叉树


二叉树,首先它是一棵树,它的特定是每个结点至多只有两颗子树(即二叉树中不存在度大于2的结点)。并且,二叉树的子树有左右之分,其次序不能任意颠倒。

二叉树的性质

性质1. 在二叉树的第i层至多有2i-1个结点(归纳法)

性质2. 深度为k的二叉树至多有2k -1 个结点(公式)

性质3. 对任何一棵二叉树T,如果其终端结点数为n0,度为2的节点数为n2,则n0 = n2 + 1

一棵深度为k且有2k-1个结点的二叉树称为满二叉树
深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树编号从1至n的结点一一对应时,称之为完全二叉树

满二叉树 VS 完全二叉树


完全二叉树的存储方式

  • 顺序存储(根结点为1)

编号为i的左子树为2i, 右子树为2i+1

  • 链式存储

lchild data rchild


二叉树遍历

  • 先序
  • 中序
  • 后序

中序遍历非递归遍历

遇到一个结点,将其压入堆栈,并去遍历它的左子树
当左子树遍历结束,从栈顶弹出这个结点并访问它
然后对右子树再进行中序遍历


中序遍历非递归算法1.png

先序遍历非递归遍历

先序遍历非递归算法.png

后序遍历非递归遍历

print语句放在T = T-> Right 之后?

相关文章

  • 树的基本概念和操作

    树(Tree)是n个结点的有限集。在任意一棵非空树中:(1) 有且仅有一个特定的称为跟(Root)的结点(2) 当...

  • influxdb 语法

    英文的:)influxdb 语法InfluxDB基本概念和操作

  • 数据结构与算法(十一)Trie字典树

    本文主要包括以下内容: Trie字典树的基本概念 Trie字典树的基本操作插入查找前缀查询删除 基于链表的Trie...

  • 基本概念和操作

    基本概念和操作 一.实验内容 1.在linux中,最最重要的就是命令,这就包含了2个过程,输入和输出 (1)输入就...

  • 数据结构之树(一)

    1、树的基本概念 1.1树是什么? 递归:一棵树是N个节点和N-1条边的集合。 1.2树的基本概念 1.2.1节点...

  • 数据结构与算法 java语言描述

    1.树的基本概念 1.1 概念 下面是一个树的例子,下面以这个树介绍基本概念。 A节点是根节点,A节点和F节点由一...

  • 程序员进阶书单:操作系统篇

    《操作系统精髓与设计原理》 全面地讲述了操作系统的基本概念、原理和方法,展现了当代操作系统的本质和特点。对操作...

  • Docker基本概念和操作

    Docker基本概念 Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。相比虚拟机,容器更加轻量级,...

  • JDBC基本概念和操作

    JDBC是Java用来操作数据库的技术,它提供了统一的接口,用来规范不同的数据库厂商为它提供实例.接口的引用指向驱...

  • 从进程和线程了解浏览器的工作原理

    进程和线程 进程(process)和线程(thread)是操作系统的基本概念。 现代操作系统都是可以同时运行多个任...

网友评论

      本文标题:树的基本概念和操作

      本文链接:https://www.haomeiwen.com/subject/mvtqbxtx.html