将排序的数组转换为平衡的二进制搜索树
在这篇文章中,我们将看到如何将排序数组转换为平衡数组 二叉搜索树.
算法:
您可能知道二叉搜索树的有序遍历会导致排序数组。我们将使用此属性将排序后的数组转换为平衡的二进制搜索树,因此数组或子数组的中间元素将始终是该数组或子数组的根。
- 初始化两个变量,以0和arr.length -1开头和结尾。
- 使用开始和结束查找数组的中间元素。
- 使中间元素成为树的根元素。
- 递归遍历左子树,找到中间并使其成为左子树的根节点
- 递归遍历右子树,找到中间的树并使其成为右子树的根节点。
爪哇代码将已排序的数组转换为平衡的二进制搜索树:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
包 组织.Arpit.爪哇2blog.二分搜索树; 上市 类 BinarySearchTreeSortedArrayMain { 上市 静态的 类 树节点 { 整型 数据; 树节点 剩下; 树节点 对; 树节点(整型 数据) { 这个.数据 = 数据; } } 上市 静态的 虚空 预购(树节点 根) { 如果 (根 == 空值) 返回; 系统.出.打印(根.数据 + ”); 预购(根.剩下); 预购(根.对); } 上市 静态的 虚空 主要(串[] args) { //创建一个二叉搜索树 整型 rr[]={10,20,30,40,50,60,70,80,90}; 树节点 根节点 = createBinarySearchTreeFromSortedArray(rr,0,rr.长度-1); 系统.出.打印(“创建的二叉搜索树的遍历遍历:”); 预购(根节点); } 上市 静态的 树节点 createBinarySearchTreeFromSortedArray(整型[] rr,整型 开始,整型 结束) { 如果 (开始 > 结束) { 返回 空值; } / *获取中间元素并将其设为根* / 整型 中 = (开始 + 结束) / 2; 树节点 节点 = 新 树节点(rr[中]); / *递归构造左子树并使其 根的左子* / 节点.剩下 = createBinarySearchTreeFromSortedArray(rr, 开始, 中 - 1); / *递归构造右子树并让根的右子* / 节点.对 = createBinarySearchTreeFromSortedArray(rr, 中 + 1, 结束); 返回 节点; } } |
当您运行上述程序时,将获得以下输出:
1 2 3 4 |
预购 遍历 的 被创造 二元 搜索 树 : 50 20 10 30 40 70 60 80 90 |