顺序存储二叉数(Java)
创始人
2024-01-23 08:04:32
0

1、顺序存储二叉数

从存储角度来看,我们之前讲的树在存储结构上不是顺序存储的,都是非线性的存储结构,所以我们可以从数组的角度来分析,数组和树可以相互转换,数组可以转换成树,树也可以转换成数组,数的示意图如下:

我们在数组中的存储样式为:

int[] nums = {1,2,3,4,5,6,7};

1.1、顺序存储二叉树的特点

  1. 对于顺序存储的树我们通常只考虑完全二叉树(规律)
  2. 第n个元素的左子节点为2*n+1(左子节点不为空的情况下)
  3. 第n个元素的右子节点为2*n+2(右子节点不为空的情况下)
  4. 第n个元素的父节点为(n-1)/2

2、前序遍历

和之前讲的二叉树的遍历一样,只是遍历的逻辑条件需要变化一些

顺序为:1 2 4 5 3 6 7

代码实现:

public static void preOrder(int index, int[] nums) {System.out.println(nums[index]);if (nums.length > 2 * index + 1) {preOrder(2 * index + 1, nums);}if (nums.length > 2 * index + 2) {preOrder(2 * index + 2, nums);}
}

3、中序遍历

和之前讲的二叉树的遍历一样,只是遍历的逻辑条件需要变化一些

顺序为:4 2 5 1 6 3 7

代码实现:

public static void inOrder(int index, int[] nums) {if (nums.length > 2 * index + 1) {inOrder(2 * index + 1, nums);}System.out.println(nums[index]);if (nums.length > 2 * index + 2) {inOrder(2 * index + 2, nums);}
}

4、后序遍历

和之前讲的二叉树的遍历一样,只是遍历的逻辑条件需要变化一些

顺序为:4 5 2 6 7 3 1

代码实现:

public static void postOrder(int index, int[] nums) {if (nums.length > 2 * index + 1) {postOrder(2 * index + 1, nums);}if (nums.length > 2 * index + 2) {postOrder(2 * index + 2, nums);}System.out.println(nums[index]);
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...