java - 二叉树节点 - 哪条路?

标签 java data-structures binary-tree tree-traversal

对于数据结构中给出的作业,我们必须创建一个测试类来确定给出的代码是否正确遍历测试类中的二叉树。

这些是提供给我们的 BinaryTreeNode 类的 3 个构造函数:

public BinaryTreeNode(Object theElement, BinaryTreeNode theleftChild, BinaryTreeNode therightChild)
{
    element = theElement;
    leftChild = theleftChild;
    rightChild = therightChild;
}

public BinaryTreeNode(Object theElement)
{
    element = theElement;
}

public BinaryTreeNode() {} 

我很快在我的测试类中进行了以下操作来创建指定的树之一:

// tree for ( A - B ) / C
BinaryTreeNode b1 = new BinaryTreeNode("A");
BinaryTreeNode b2 = new BinaryTreeNode("-");
BinaryTreeNode b3 = new BinaryTreeNode("B");
BinaryTreeNode b4 = new BinaryTreeNode("/");
BinaryTreeNode b5 = new BinaryTreeNode("C");
BinaryTreeNode bAB = new BinaryTreeNode(b2, b1, b3);
BinaryTreeNode bRoot = new BinaryTreeNode(b4, bAB, b5);
q.put(bRoot);

但是,我的 friend 建议我这样做:

// tree for ( A - B ) / C
BinaryTreeNode b1 = new BinaryTreeNode("A");
BinaryTreeNode b2 = new BinaryTreeNode("B");
BinaryTreeNode b3 = new BinaryTreeNode("C");
BinaryTreeNode bRoot= new BinaryTreeNode("/", new BinaryTreeNode("-", b1, b2), b3);
q.put(bRoot);

但是,他很难解释为什么这种方式更好。有人能解释一下为什么这样效率更高吗?如果示例中需要更多代码,请询问。

最佳答案

第二个使用字符串作为“元素”值,第一个使用 BinaryTreeNode。我不知道“element”的值应该是什么,但我的直觉告诉我它应该是一个字符串。这是这些片段之间的唯一区别。

关于java - 二叉树节点 - 哪条路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1767324/

上一篇:java - 重复消除

下一篇:java配置文件

相关文章:

python - 如何检查二叉树是否已满?

algorithm - 如何复制包含循环的完整非二叉树

java - 使用 Java 8,创建排序和分组字符串列表的最简洁方法是什么

java - 通过线程引用传递整数

javascript - 如何通过在 python 的所有输出中添加 name1.name 2.... 来修改输出

c++ - 红黑树插入问题

java - 多线程控制台输出不同

java - 当 Java、C++ 或任何面向对象语言中的属性是动态和可变的时,如何创建一个类?

python - python中堆使用什么数据结构

Haskell 二叉树插入函数