数据结构学习--03

本文介绍了树的基本定义,如节点、根节点、子树、度数等,重点讨论了二叉树及其性质,包括满二叉树、完全二叉树的存储方法,以及赫夫曼树的带权路径长度优化特性。同时概述了二叉树的遍历方式及其在结构表示中的应用。
摘要由CSDN通过智能技术生成

        树是N个节点的有限集合,它需满足有且仅有一个根节点,其余节点可分为m个互不相较的有限集合,其中每一个集合又可作为一棵树,被称为子树。树的任何节点都可以有0到任意个节点(直接后继),但至多有一个直接前驱。

        一个节点的子树个数被称为该节点的度数,一颗树的度数是该树中节点的最大度数。

        度数为0的节点被称为叶子节点(树叶)或终端节点,度数不为0的节点称为分支节点,除根节点以外的节点被称为内部节点。

        一个子树的根节点称为该节点的父节点,父节点称其为子节点,父节点的其他节点称为兄弟节点。一颗树的根节点没有父节点,叶子节点没有子节点。

        树中节点层数的最大值称为树的深度或高度。

        若树中每个节点的各个子树的排列从左到右,不能交换,则该树为有序树(兄弟间有序),一般的树都是有序树。

        每个节点最多只有两个节点的,且严格区分左右节点的树被称为二叉树,二叉树即使只有一个节点也严格区分左右节点。

        二叉树中第i层最多有2**(i-1)个节点,该树最多有2**i-1个节点。

        任意二叉树中叶子节点比度数为2的节点数多1。

        满二叉树为深度K的树的节点个数为2**K-1。

        完全二叉树:只有最下面两层有度数小于2的节点。

        有N个节点的完全二叉树可以用有N+1个元素的数组进行顺序存储,节点号(从上到下,从左到右编号,从1开始)和数组下标一一对应,下标为0的元素不用。不完全二叉树可以添加虚节点称为完全二叉树后进行顺序存储,不过这样就会浪费一些空间。

        二叉树一般使用链表结构进行存储,在C语言中以结构体的方式表示每一个节点,结构体中一般包括左节点指针、右节点指针、节点数据。

        二叉树遍历分为先序遍历(先访问树根再访问左节点,最后访问右节点)、中序遍历(先访问左节点,再访问树根,最后访问右节点)、后序遍历(先访问左节点,再访问右节点,最后访问树根)。通过中序遍历结合任何另一种遍历就可以得知二叉树的结构。

        赫夫曼树是带权路径长度最短的树,又称为最优树。

        从树的一个节点到另一个节点的分支构成一条路径,分支的数目称为路径的长度。树的路径长度是指树根到每个节点的路径长度之和。

        节点的带权路径长度指的是从树根到该节点的路径长度和节点上权的乘积。树的带权长度为所有叶子节点的带权路径和,记作WPL。WPL最小的树被称为最优二叉树,赫夫曼树。

        

        

        

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值