java - 制作正确的二叉树

标签 java binary-tree

    private void dcHullForUpperHull(List<Point> list, Point p, Point q) {
    List<Point> upperH = new ArrayList<Point>();
    List<Point> lowerH = new ArrayList<Point>();
    int low = 0;
    int high = list.size()-1;

    System.out.println(list);
    if(low<high) {

        Point pivot = list.get((low+high)/2);

        for (Point point : list) {
            boolean bool = Determinate.isPointLeftSide(q, pivot, point);

            if (bool == true ) {
                upperH.add(point);
            }
        }
        for (Point point : list) {
            boolean bool = Determinate.isPointLeftSide(pivot, p, point);
            boolean bool1 = Determinate.isPointOnLine(pivot, p, point);
            if (bool == true || bool1==true) {
                lowerH.add(point);
            }
        }

        System.out.println(pivot.toString());
        System.out.println(upperH.toString());
        System.out.println(lowerH.toString());

        dcHullForUpperHull(upperH, pivot, q);           
        dcHullForUpperHull(lowerH, p, pivot);



    }
}

它打印:

[X :132.0  Y: 140.0angle0.0, X :162.0  Y: 116.0angle0.0, X :210.0  Y: 112.0angle0.0, `enter code here`X:258.0  Y: 117.0angle0.0]
X :162.0  Y: 116.0angle0.0
[X :210.0  Y: 112.0angle0.0, X :258.0  Y: 117.0angle0.0]
[X :132.0  Y: 140.0angle0.0, X :162.0  Y: 116.0angle0.0]
[X :210.0  Y: 112.0angle0.0, X :258.0  Y: 117.0angle0.0]
X :210.0  Y: 112.0angle0.0
[X :258.0  Y: 117.0angle0.0]
[X :210.0  Y: 112.0angle0.0]
[X :258.0  Y: 117.0angle0.0]
[X :210.0  Y: 112.0angle0.0]
[X :132.0  Y: 140.0angle0.0, X :162.0  Y: 116.0angle0.0]
X :132.0  Y: 140.0angle0.0
[]
[X :132.0  Y: 140.0angle0.0]
[]
[X :132.0  Y: 140.0angle0.0]

很明显我的二叉树不行!!还有一种方法“isPointLeftSide”会说该点在其确定的一行的左侧。但我的主要问题是:二叉树不好。并且我将有一些空的外部节点。 请帮我 谢谢

最佳答案

此代码不会创建二叉树。它几乎是快速排序(好吧,你进行枢轴、分区和递归调用,但不要再次将排序后的列表放在一起;因此几乎是)原始列表。您能具体说明您实际上想做什么吗?

关于java - 制作正确的二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275619/

相关文章:

JavaFX:如何在 XY 线图的 Y 轴上正确实现 `getValueForDisplay()`?

java - 生成异常 : Failed to execute aapt

java - 如何让 TestNG 在关闭之前等待我的测试完成

c - 为什么交换二叉树节点时 GDB 观察点会停在不相关的行上?

algorithm - 在二叉树上实现随机过程

c - 打印 B+ 树的键

java - java中的串联?

java - 如何不将 json 中的空值显示为 jax-rs 的响应

java - 根据子节点的数量确定二叉树中的节点数量

c++ - 2 位输入的表达式树