树的定义及术语

树(tree)的定义

简单讲:树就是树,是颜色不一样的烟火…(手动微笑)

关于树的术语(摘自百度百科)

http://baike.baidu.com/link?url=g8V1zMAkQ9cMVxsUJZZpJRT0iBkinqBJWqOUl789tfC3ufE4KvrsHfmwv-2phN9uSYfSeOuAU3QIXvZ2uSTbE2zOFbS55yPr1vc6uU3xHPa

  • 节点的度:一个节点含有的子树的个数称为该节点的度;
  • 叶节点或终端节点:度为0的节点称为叶节点;
  • 非终端节点或分支节点:度不为0的节点;
  • 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
  • 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
  • 兄弟节点:具有相同父节点的节点互称为兄弟节点;
  • 树的度:一棵树中,最大的节点的度称为树的度;
  • 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
  • 树的高度或深度:树中节点的最大层次;
  • 堂兄弟节点:双亲在同一层的节点互为堂兄弟;
  • 节点的祖先:从根到该节点所经分支上的所有节点;
  • 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
  • 森林:由m(m>=0)棵互不相交的树的集合称为森林;

完全二叉树

定义

先看二叉树:二叉树是指每个节点只能有两个子节点.
完全二叉树是指一颗二叉树必须能按层连续编号.如图就是完全二叉树,也是满二叉树:
完全二叉树


如下图也是完全二叉树,但不是是满二叉树:
完全二叉树


如下图不是完全二叉树(9, 10 两个节点被剪掉)
不是完全二叉树

完全二叉树的有趣的特性:

当用数组存储完全二叉树时可以用节点编号作为数组下标。这是有以下特性:

  • 节点arr[i] 的右孩子等于arr[i*2]; 左孩子等于arr[i*2+1];
  • 节点arr[i] 的父节点等于 arr[i/2] (当i/2= 0时,arr[i] 是根节点)
  • 完全二叉树的深度/高度等于 : L = log2 (size+1) ; L向上取整
  • 完全二叉树的最大节点数量s = (2^n)-1,n = 树的高度
  • 应为二叉树的逐层增长规律与2的指数增长相似.所以这些特性都可以以此理解.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构专业术语中存在许多不同的概念和定义。以下是一些常见术语的区别: 1. 数组(Array)和链表(Linked List): - 数组是一种线性数据结构,它以连续的内存空间存储相同类型的元素,并通过索引访问这些元素。 - 链表也是一种线性数据结构,它使用节点来存储元素,并通过指针将这些节点连接起来。链表允许动态分配内存,但访问元素的效率较低。 2. 栈(Stack)和队列(Queue): - 栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。 - 队列是一种先进先出(FIFO)的数据结构,它允许在队尾插入元素,在队头删除元素。 3. 堆(Heap)和(Tree): - 堆是一种特殊的型数据结构,它具有堆属性,即每个节点的值大于(或小于)其子节点的值。堆通常用于优先级队列等应用。 - 是一种非线性数据结构,由节点和边组成。不同的有不同的特点和用途,如二叉树、红黑、AVL 等。 4. 哈希表(Hash Table)和映射(Map): - 哈希表是一种以键-值对存储数据的数据结构,通过哈希函数将键映射到存储位置。 - 映射是一种抽象数据类型,它定义了一种键和值之间的关联关系。哈希表可以用作实现映射的数据结构。 这些术语之间的区别取决于它们的定义、特性和应用场景。需要根据具体的情况来选择适合的数据结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值