树和二叉树

本文详细介绍了树的基本概念,包括根、叶子、度等术语,并探讨了树的图形、广义表和左孩子右兄弟表示法。接着,深入讲解了二叉树的定义、逻辑结构和特性,包括满二叉树和完全二叉树的性质。此外,文章还阐述了二叉树的遍历方法,如先序、中序和后序遍历,并提供了二叉树的编程实践,涵盖了递归和非递归遍历的实现。
摘要由CSDN通过智能技术生成

目录

一、树的基本概念

二、树的表示法

1、图形表示法

2、广义表表示法

3、左孩子右兄弟表示法

三、二叉树的概念

1、二叉树的基本概念

2、二叉树的表示

3、二叉树的遍历

4、二叉树的编程实践

(1)二叉树的递归遍历

(2)求树的叶子数

(3)求树的高度

(4)拷贝二叉树

(5)释放二叉树

(6)二叉树的非递归遍历


一、树的基本概念

👉树的定义:

由一个或多个(n≥0)结点组成的有限集合T ,有且仅有一个结点称为根( root ) ,当n>1
时,其余的结点分为m(m≥0)个互不相交的有限集合T1,T2 ,... ,Tm。每个集合本身
又是棵树,被称作这个根的子树。

👉树的结构特点

■ 非线性结构,有一个直接前驱,但可能有多个直接后继( 1:n ) 
■ 树的定义具有递归性,树中还有树。
■ 树可以为空,即节点个数为0。

👉若干术语:

        → 即根节点(没有前驱)

叶子    → 即终端节点(没有后继)

■ 森林    →指m棵不相交的树的集合(例如删除A后的字数个数)

■ 有序树 →结点各子树从左至右有序,不能互换(左为第一)

■ 无序树 →结点各子树可互换位置。

双亲     →即上层的那个结点(直接前驱) parent

孩子     →即下层结点的子树(直接后迷) child

■ 兄弟     →同一双亲下的同层结点(孩子之间互称兄弟) sibling-

■ 堂兄弟 →即双亲位于同一层的结点(但并非同一双亲) cousinv

■ 祖先     →即从根到该结点所经分支的所有结点

■ 子孙     →即该结点下层子树中的任一结点        

■ 结点               →即树的数据元素

■ 结点的度        →结点挂接的子树数(有几个直接后继就是几度)

■ 结点的层次    →从根到该结点的层数(根结点算第一层)

■ 终端结点        →即度为0的结点,即叶子

■ 分支结点        →除树根以外的结点(也称为内部结点)

■ 树的度           →所有结点度中的最大值(Max{各结点的度})

■ 树的深度(或高度)  →指所有结点中最大的层数(Max{各结点的层次})

上图中的结点数=13,树的度= 3,树的深度=4

二、树的表示法

1、图形表示法

事物之间的逻辑关系可以通过树的形式很直观的表示出来,如下图:

2、广义表表示法

用广义表表示法表示上图

 中国(河北(保定,石家庄),广东(广州,东莞),山东(青岛,济南)) 

跟作为由子树森林组成的表的名字写在表的左边

3、左孩子右兄弟表示法


 

左孩子右兄弟表示法可以将一颗多叉树转化为一颗二叉树

三、二叉树的概念

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值