当前位置: 首页 > 面试题库 >

使用链接列表创建完整的二叉树,不比较节点值

林德华
2023-03-14
问题内容

我正在尝试使用链接列表而不是arraylist创建一个完整的二叉树,而不比较节点值。我的意思是插入一个新值,我不希望比较该值是否小于,大于或等于根的值,以便将其添加到左侧链接或右侧链接,但仍然能够创建一个完整的二叉树。

您认为有可能吗?如果是,您有任何想法吗?或者您可以指出我可以使用/阅读的内容吗?

编辑:

这是一个使我的问题更清楚的例子:
我按插入方法显示的顺序添加数字:1 2 3 4 5 6
insert方法负责树的结构。
1是根,因为它是第一个添加的值。
2是1的左孩子
3 1个合适的孩子
4 2的左子
5 2个合适的孩子
6 3的左子

解:

public void insert(Comparable item) {
    total++;
    if (root == null) {
        root = new TreeNode(item);
    } else {
        int quotient=total;
        Stack path = new Stack();
        TreeNode p = root;  // helper node to follow path
        quotient /= 2;  // skip last step
        while (quotient>1) {    // build path to follow
            path.push(quotient%2);
            quotient /= 2;
        }
        while (!path.isEmpty()) {
            Object q = path.pop();
            if (q.equals(0))
                p = p.getLeft();
            else
                p = p.getRight();
        }
        if (total%2==0) // check last step
            p.setLeft(new TreeNode(item));
        else
            p.setRight(new TreeNode(item));
    }
}

问题答案:

记录一下树中有多少个项目。

然后,要添加第一n项,请遵循以下步骤创建的路径:n重复除以二,并跟踪其余部分。按照其余部分反向创建的“路线”:其中1表示右侧,0表示左侧。

例如,要添加第11项:

11/2 = 5 (1)
5/2 = 2 (1)
2/2 = 1 (0)

这意味着从根开始,您将向左,向右,向右走。



 类似资料:
  • 给定一个包含n个节点的完整二叉树,一个节点的平均后代数是多少?例如,根节点有n-1个子节点,每个叶节点有0个子节点,但是考虑到所有节点,平均值是多少?

  • 问题内容: 我对二叉树有一些疑问: Wikipedia指出,当“完整的二叉树是其中所有级别(可能除了最后一个级别)均已完全填充且所有节点都位于最左侧”的二叉树时,该二叉树即已 完成 。最后的“越远越好”的段落是什么意思? 如果(1)它是空的,或者(2)它的左右子级是平衡的,并且左树的高度在以下高度的1之内,则格式正确的二叉树被称为“高度平衡”。正确的树,取自如何确定二叉树是否平衡?,这是正确的还是

  • 考虑二叉树,其中每个节点要么是叶,要么正好有两个子节点(左和右,我们认为不同)。在节点上有多少不同的树 例如: -3个节点-

  • class Node(object): def __init__(self, data, left=None, right=None): self.data = data self.left = left self.right = right tree = Node(1, Node(3, Node(7, Node(0)), Node(6)), Node(2, Node

  • 所以我想进入我的树(假设它没有重复项并且分支正确)并找到参数中给出的元素。我发现我的方法给了我一个 BinaryNode,它类似于我想要的(根)在其字段中,但实际上不是根。我没有覆盖等于方法。使用 equals 方法,当比较返回的对象和根时,测试返回 false。我想知道为什么我的变量 elementNode 在设置为 null 时不引用(因此更改)根为 null。 二进制节点是使用泛型实现的。调

  • 下面给出了二叉树的实现。 如图中所示,树不是完整的二叉树。如何编写一个函数,将上述二叉树转换为完整的二叉树,只需将字符串数据节点添加到没有子节点的节点,即可生成完整的二叉树。 我将手动在代码中添加节点,以获得如下结果树: 但是,如何编写一个函数,它将采取根节点和返回树,这是完整的二叉树。