大家好我应该编写ThreadedNode()类,但是我遇到了一些问题。
我理解二叉树的线程化二叉树是通过将每个空左子项设置为inorder遍历中的节点的前任和每个null右子项来获得的。 inorder遍历中节点的后继。
然而我的问题始于构造函数 //给你的根时线程化二叉树 public ThreadedNode(BinaryNode root)
我知道它收到了一个binaryNode,我必须把它变成一个线程树,但我怎么创建新的线程树?
答案 0 :(得分:0)
创建线程化二叉树的常用方法是使用假头。这使得单个节点树更易于理解,构造函数更直接。
因此你的构造函数可能看起来像:
public class ThreadedNode {
private BinaryNode head;
public ThreadedNode(BinaryNode root) {
head = new BinaryNode();
root.makeThreaded();
root.setRight(head);
head.setRight(root);
}
}
请记住,稍后您需要在插入,删除等中考虑这个假头。