【发布时间】:2020-06-27 18:23:41
【问题描述】:
我必须使用一种按升序打印树中所有值的方法来编写树。所以我按顺序选择遍历算法。它也必须是递归的。我在互联网上搜索了 2 天来解决这个问题。在这之后我写了这个方法。
我的输入是:20,19,13,15,7,28,4,23,9
所以输出必须是:4,7,9,13,15,19,20,23,28
但我的输出是:4 9 7 15 13 19 20 28 23
为什么?
这是你需要的部分代码
class Tree<V extends Comparable<V>> {
class TreeNode {
V val;
TreeNode left, right;
TreeNode(V v) {
val = v;
}
}
TreeNode root;
void insert (V val) {
if (root == null)
root = new TreeNode(val);
else
insert(root, val);
// TODO implement this method
}
private void insert (TreeNode parent, V val) {
TreeNode t = root;
int cmp = val.compareTo(t.val);
if (cmp >= 0) {
if (parent.left == null)
parent.left = new TreeNode(val);
else
insert(parent.left, val);
}
else {
if (parent.right == null)
parent.right = new TreeNode(val);
else
insert(parent.right, val);
}
}
// - to print all values in the tree in ascending order
void printNodesAll () {
printNodesAll(root);
}
private void printNodesAll (TreeNode node){
if (node == null)
return;
else {
printNodesAll(node.right);
System.out.printf("%s ", node.val);
printNodesAll(node.left);
}
}
public static void main(String[] args) {
Tree <Integer> names = new Tree <>();
names.insert(20);
names.insert(19);
names.insert(13);
names.insert(15);
names.insert(7);
names.insert(9);
names.insert(4);
names.insert(28);
names.insert(23);
names.printNodesAll();
}
}
}
【问题讨论】:
标签: java generics binary-search-tree inorder