Tag: binary tree

一个完整的二进制搜索树,在Java中插入了级别顺序

我们得到了一个我们需要编码的作业: 二进制搜索树 树必须是完整的 ,而不是完美的 (这意味着所有不在最低级别或第二低级别的节点应该有2个子节点,而最低级别的节点应该尽可能地离开) 我们需要按级别顺序插入树 因此,如果我有一个元素{0, 1, 2, 3, 4, 5, 6, 7}的数组,则root应为4 ,左侧为2,1,3,0,以及6, 5, 7在右侧。 级别顺序插入将是: 4, 2, 6, 1, 3, 5, 7, 0 只需占用数组的中间并将其作为root用户不起作用。 如果你得到一个1到9个元素的数组,你将有4个作为root(java中的int值,double将是4.5),右边有5个元素,左边有4个元素。 这不是一棵完整的树。 甚至不是一棵完美的树。 我的代码只能向左或向右插入,这取决于它是否比根更小,没有水平顺序插入。 Anytype x参数是要插入的值,而BinaryNode t是我们在树中的当前节点(如果我们需要向左或向右插入新值,我们的比较方式) private BinaryNode insert( AnyType x, BinaryNode t ) { if( t == null ) return new BinaryNode( x, null, null ); […]

无法在Java中向二进制搜索树添加1,000,000个元素

我正在将二进制搜索树作为一项任务。 当我尝试添加1,000,000个元素时,我遇到了问题。 插入15,000个元素后,我收到错误: 线程“main”java.lang.StackOverflowError中的exception 我的代码有问题我无法找到我做错的地方。 public class BinarytreeInsert { public static void main(String[] args) { new BinarytreeInsert().run(); } static class Node { Node left; Node right; int value; public Node(int value) { this.value = value; } } public void run() { Node rootnode = new Node(25); System.out.println(“Building tree with root value ” + rootnode.value); System.out.println(“=================================”); […]

检查二叉树是否也是二叉搜索树的问题

我正试图解决这个问题,但我遇到了一些麻烦: 在二叉搜索树(BST)中: 节点左子树中每个节点的数据值小于该节点的数据值。 节点右子树中每个节点的数据值大于该节点的数据值。 给定根节点: class Node { int data; Node left; Node right; } 确定二叉树是否也是二叉搜索树 我有这个代码: boolean check(Node root) { //node doesn’t have any children if (root.left == null && root.right == null) { return true; } boolean leftIsBst = true; boolean rightIsBst = true; if (root.left != null) { leftIsBst = (root.left.data root.data) […]

如何在RedBlackTree实现中修复删除?

这是我正在使用的RedBlackTree的实现(来自Mark Allen Weiss,Data Structures public class RedBlackTree<AnyKey extends Comparable, AnyValue extends Comparable> implements MyTreeMap{ private static final int BLACK = 1; private static final int RED = 0; // The psuedo(bogus) root, has a key value of negative infinity and a right link to the real root. private RedBlackNode header; // Used in place of […]