判断一个序列是不是堆的方法
2013-11-20 17:02
260 查看
private boolean isHeap(int[] arr) { int len = arr.length; if (arr[0] > arr[len - 1])// 大堆 { for (int i = 0; i < len / 2; i++) { if (2 * i + 2 >= len) { if (arr[i] >= arr[2 * i + 1]) { continue; } else { return false; } } else if (arr[i] >= arr[2 * i + 1] && arr[i] >= arr[2 * i + 2]) { continue; } else { return false; } } } else for (int i = 0; i < len / 2; i++) { if (2 * i + 2 >= len) { if (arr[i] <= arr[2 * i + 1]) { continue; } else { return false; } } else if (arr[i] <= arr[2 * i + 1] && arr[i] <= arr[2 * i + 2]) { continue; } else { return false; } } return true; }
推分为大堆,和小堆 ,
大堆根最大,小堆根最小,好像是废话。
大堆下面所有后裔都小于上面的节点,小堆反之。百度百科上对堆的解释让我无法理解。还是自己研究一下好理解。
相关文章推荐
- 链表逆序(递归&非递归)/倒序输出链表值/用一个递增序列构建平衡二叉搜索树/用递归的方法判断数组是不是升(降)序排列
- 编写方法,判断一个正整数是不是质数
- 【100题】判断一个序列是不是一个BST的后序遍历
- 二叉树系列——判断一个序列是不是一棵二叉搜索树的遍历序列
- 判断一个数是否是回文数(两种方法1.将数字翻转看与原来是否相等2.当作字符串处理看是不是左右对称相等)
- 判断一个序列是不是另外一个序列的栈的pop序列
- 如何判断一个数是不是素数(prime number) 方法
- 怎么判断一个序列是不是堆?
- [置顶] 【面试题】判断一个序列是不是栈的输出序列
- 判断给出的序列是不是一个二叉搜索树的后序遍历
- 判断一个数是不是素数的方法
- 从StL stack 查找一个元素或者判断一个元素是不是存在的方法
- 怎么判断一个序列是不是堆?
- 判断一个图片是不是伪造的方法
- javascript 判断 一个对象是不是 数组的方法
- 判断一个序列是不是二叉查找树的后序遍历结果
- 判断一个序列是不是二叉搜索树的后序遍历序列
- 判断一个计算机是不是域主机的几个方法
- 判断一个变量是不是数组Array类型的方法
- 【面试题】判断一个序列是不是栈的输出序列