提问人:Mostack 提问时间:12/3/2022 更新时间:12/3/2022 访问量:104
将节点添加到二叉搜索树并遍历它(按顺序遍历)
Adding Nodes to a Binary Search Tree and Traversing it (in order traversal)
问:
法典:
public class BinaryTree {
public static int size = 0;
private static class BST {
int value;
BST leftChild, rightChild;
BST(int value) {
this.value = value;
this.leftChild = null;
this.rightChild = null;
}
BST getLeftChild() {
return this.leftChild;
}
BST getRightChild() {
return this.rightChild;
}
int getValue() {
return this.value;
}
void setLeftChild(BST n) {
leftChild = n;
}
void setRightChild(BST n) {
rightChild = n;
}
public void addNode(BST n) {
if (n.value < this.value) {
System.out.println("this's value: " + this.getValue());
if (this.getLeftChild() == null) {
// add node n as left child
this.setLeftChild(n);
} else {
// otherwise recurse down the left subtree
this.getLeftChild().addNode(n);
}
}
// insert somewhere into the right subtree
else if (n.value > this.value) {
if (this.getRightChild() == null) {
// add node n as right child
this.setRightChild(n);
} else {
// otherwise recurse down the right subtree
this.getRightChild().addNode(n);
}
}
// duplicate elements
else {
return;
}
}
void inOrderTraversal() {
if (this.getLeftChild() != null) {
this.getLeftChild().inOrderTraversal();
}
System.out.print(this.getValue() + " ");
if (this.getRightChild() != null) {
this.getRightChild().inOrderTraversal();
}
}
}
static BST rootNode = null;
void addNode(int value) {
size++;
if (rootNode == null) {
// Create rootNode
rootNode = new BST(value);
} else {
// Add newNode to the tree
rootNode.addNode(new BST(value));
}
}
public void show() {
if (rootNode != null) {
System.out.print("In-order traversal: ");
rootNode.inOrderTraversal();
System.out.println();
} else {
System.out.println("Empty...");
}
}
public static void main(String[] args) {
BinaryTree object = new BinaryTree();
object.addNode(5);
object.addNode(3);
object.addNode(7);
object.addNode(1);
object.addNode(4);
object.addNode(6);
object.addNode(8);
object.addNode(0);
object.addNode(2);
object.show();
}
}
我仍然无法理解 addNode 方法 (BST) 和 inOrderTraversal (BST) 方法是如何工作的,尤其是“this”关键字如何与点表示法及其递归步骤一起使用......
我尝试创建代码的递归图,但我无法理解递归在这里是如何工作的......有人可以帮我吗?
答: 暂无答案
评论
this
只是您当前所在的节点,即您调用的节点。