Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在二叉树子类中需要用于前序、中序和后序遍历的字段?_Java_Algorithm_Data Structures_Tree_Binary Tree - Fatal编程技术网

Java 为什么在二叉树子类中需要用于前序、中序和后序遍历的字段?

Java 为什么在二叉树子类中需要用于前序、中序和后序遍历的字段?,java,algorithm,data-structures,tree,binary-tree,Java,Algorithm,Data Structures,Tree,Binary Tree,我在网上自学二叉树相关内容,使用开放式数据结构教材 然而,我正在完成我参加的那些练习,我真的不知道它在问什么。看一看,上面写着: 练习6..7创建BinaryTree的子类,其节点具有用于存储预订单、后订单和订单编号的字段。编写递归方法preOrderNumber()、inOrderNumber()和postOrderNumbers(),以正确分配这些数字。这些方法都应该在O(n)时间内运行 我不是在要求解决问题,我只是很难理解教科书的作者在这个特殊的练习中要求做什么。在我看来,遍历应该使用前序

我在网上自学二叉树相关内容,使用开放式数据结构教材

然而,我正在完成我参加的那些练习,我真的不知道它在问什么。看一看,上面写着:

练习6..7创建
BinaryTree
的子类,其节点具有用于存储预订单、后订单和订单编号的字段。编写递归方法
preOrderNumber()
inOrderNumber()
postOrderNumbers()
,以正确分配这些数字。这些方法都应该在O(n)时间内运行

我不是在要求解决问题,我只是很难理解教科书的作者在这个特殊的练习中要求做什么。在我看来,遍历应该使用前序、按序或后序,那么保留一个字段来存储数字的目的是什么呢?实际上,我对他所指的数字也感到困惑


这里非常感谢您的任何建议。提前谢谢

听起来作者很想让您创建如下类:

class LabeledBinaryTree extends BinaryTree {
    void preOrderNumber();
    void inOrderNumber();
    void postOrderNumber();
}

LabeledBinaryTree
类运行方法后,我们得到:

[A pre=0,in=1,post=3]
/              \
[B pre=1,in=0,post=0][C pre=2,in=2,post=2]
\
[D前=3,后=3,后=1]
因为遍历是

pre=>[A,B,C,D]
in=>[B,A,C,D]
post=>[B、D、C、A]

如需进一步澄清,请检查您提出的上述问题。

谢谢,现在我对这个实例变量的用法已经清楚多了!
class LabeledNode<T> extends Node<T> {
    T data;
    LabeledNode<T> left;
    LabeledNode<T> right;
    int preOrderNum;
    int inOrderNum;
    int postOrderNum;

    public LabeledNode(T data, LabeledNode<T> left, LabeledNode<T> right);
}