二叉树的建立

本文介绍了二叉树的基本概念,包括二叉树的定义、与一般树的区别。重点讲解了二叉树的两种存储方式:数组表示法和链表表示法,详细阐述了每种方法的建立规则、优缺点,并提供了具体的建立二叉树的代码示例。
摘要由CSDN通过智能技术生成

一、二叉树简介

一般树状结构在计算机内存中以链表存储,对于n元树,每个节点的分支度不相同,因此指针域必须为孩子节点最多的个数,每个节点的数据结构如下:

这里写图片描述

假设n元树有m个节点,那么此树共享了n*m个指针域,除树根外,每个非空链接都指向一个节点,因此空链接个数为 n*m-(m-1)=m*(n-1)+1,因此n元树的链接浪费率为 m*(n-1)+1 / m*n。
当n=2时,2元树的链接浪费率为1/2
当n=3时,3元树的链接浪费率为2/3
当n=4时,4元树的链接浪费率为3/4
……
当n=2时链接浪费率最低,因此最常使用二叉树结构来取代树状结构。

二叉树定义:是一个由有限节点所组成的集合,可以为空集合,或由一个树根及左右两个子树所组成。即每个节点最多只能有两个孩子节点。

数据结构如下:
这里写图片描述

与一般树的区别:

  • 树不能为空集,但二叉树可以
  • 树的分支度为d>=0,但二叉树最多为2个
  • 树的子树间没有次序关系,二叉树必须考虑子树间的次序关系,如下图所示就是两棵不同的二叉树

这里写图片描述

二、二叉树存储方式

1、数组表示法

使用一维数组存储二叉树,将二叉树想象成一个满二叉树,数组第一个位置不用。对每层节点由从上到下、从左到右依次编号,分别将值存入数组所对应的编号的位置上。用数组来存储二叉树,越接近满二叉树越节省空间,若为歪斜树则非常浪费空间,增删数据较麻烦。

建立规则:小于父节点的值放在左子节点,大于父节点的值放在右子节点,这样可以确保左子树的值一定完全小于树根,右子树的值一定大于树根。

下来我们看一个以数组建立二叉树的实例。
例如我们用数据{6,3,5,9,7,8,4,2}按照以上规则建立的二叉树如下所示:

这里写图片描述

在内存中的情况为:

这里写图片描述

圆圈旁边的数字表示该节点在数组中的索引值,节点不存在的值为0。观察规律有,左子节点的下标是父节点下标的2倍,右子节点下标是父节点下标的2倍+1
因此对于每个值,我们从根节点开始循环,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值