数据结构小记【Python/C++版】——树与二叉树篇

一,树的简介

树结构的形状很像现实生活中一棵倒置的大树。

树结构是由一堆节点和边组成的具有层级关系的非线性数据结构。

树顶部的节点被称为根节点,它通常是搜索、遍历等操作的起始位置。

树结构在很多地方都有应用,比如操作系统中的文件结构。

树的常见概念:

根节点(Root):树的最顶层节点。

父节点(Parent Node):节点沿着边往上一层的节点称为该节点的父节点。

子节点(Child Node):节点沿着边往下一层的节点称为该节点的子节点。

兄弟节点(Sibling):同一个父节点的子节点互为兄弟节点。

边(Edge):父节点和子节点之间连接,形成边。

叶子节点(Leaf):没有子节点的节点称为叶子节点或者叶节点。

子树(Subtree):以某个子节点为根节点的树分支。

节点的深度(Depth):是指从根节点到该节点的距离。

节点的高度(Height):该节点到叶子节点的最长距离。

树的高度(Height of tree):根节点到叶子节点的最长距离。

节点的层级(Level):该节点的父节点数量+1。

节点的度(Degree):该节点的子节点数量。

二,二叉树的基础概念

每个节点最多有两个子节点的树被称为二叉树

在给定的二叉树中,任何级别的最大节点数为 2 l-1,其中"l"是级别编号。

树有很多种,二叉树只是其中一种典型结构,二叉树与其他种类树的区别:

1.有些树的每个节点可以有若干个子节点,而二叉树的每个节点最多只能有两个子节点。

2.有些树的每个节点的子节点之间可以是无序的,两个子节点之间甚至可以交换位置。而(有序)二叉树中,每个节点的子节点之间需要区分是左子节点还是右子节点,即使整棵树就两个节点。

三,二叉树的图示结构与分类

(1),满二叉树(full binary tree)

每个节点都有0个或2个子节点的二叉树称为满二叉树。

满二叉树除叶子节点以外,所有节点都有两个子节点。

(2),完美二叉树(perfect binary tree)

所有的叶子节点都在同一层。

所有内部节点都必须有两个子节点。

(3),完全二叉树(complete binary tree)

完全二叉树除了最后一层之外的所有层次都被填满,最后一层有的位置只有左节点。

注意,满二叉树是特殊的完全二叉树。

四,二叉树的常见表示方式

方式一,链式存储——用链表结构来表示二叉树

此时的二叉树被视为节点的集合。       

链表节点的构成:             

 左指针,指向节点的左子节点的指针。           

 数据域,节点存储的实际数据。           

 右指针,指向节点的右子节点的指针。

如果给定节点没有子节点࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员与背包客_CoderZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值