【发布时间】:2021-01-14 20:27:13
【问题描述】:
假设这是二叉树的情况。 (见下图。)我需要打印按顺序遍历的所有节点,它必须只打印多个根节点。
对于上面的二叉树,我想要的输出是 20 10 25 5 15 30
这是我的代码
class Node {
int data;
Node left, right;
Node(int value) {
data = value;
left = right = null;
}
}
class Tree {
Node root;
Tree() {
root = null;
}
// Method to construct a binary tree from the given array (Do not edit the code given below)
public Node insertNode(int[] elementsArr, Node node, int i) {
if (i < elementsArr.length) {
node = new Node(elementsArr[i]);
node.left = insertNode(elementsArr, node.left, 2 * i + 1);
node.right = insertNode(elementsArr, node.right, 2 * i + 2);
}
return node;
}
// Method to print nodes that are multiple of root node
//NOte - i have updated the printNode method but still not getting desired output
public void printNodes(Node node) {
// Write your code here
if (node == null)
return;
if(node.data% root.data==0) {
printNodes(node.left);
System.out.print(node.data+ " ");
printNodes(node.right);
}
}
}
/*Don't change main class also*/
public class PrintSpecificNodes {
public static void main(String[] x) {
Tree tree = new Tree();
Scanner sc = new Scanner(System.in);
int size;
size = sc.nextInt();
if (size <= 0) {
System.out.println("Size should be a positive integer");
} else {
int[] elementsArr = new int[size];
for (int i = 0; i < size; i++) {
elementsArr[i] = sc.nextInt();
}
tree.root = tree.insertNode(elementsArr, tree.root, 0);
tree.printNodes(tree.root);
}
}
}
我必须对方法 printNodes() 进行哪些更改才能获得所需的输出?
【问题讨论】:
-
这段代码你得到了什么结果?
-
只有正确的五次,但我不知道如何过滤输出,使其只能显示根节点的倍数。只需检查 printNode(Node node) { } 方法要改变什么
-
方法好像还可以,你说的“只真五次”是什么意思
-
您尝试将
node.data % node.data更改为node.data % root.data吗?
标签: java data-structures binary-tree binary-search-tree