作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定:
public void printInorder() {
printInorder(root);
}
private void printInorder(Node<E> n) {
...
}
private static class Node<E> {
private E data;
private Node<E> left;
private Node<E> right;
private Node(E data) {
data = data;
left = right = null;
}
我的任务是完成私有(private) Inorder 方法,使其能够与递归一起使用。到目前为止我所做的是:
private void printInorder(Node<E> n) {
if (n != null) {
printInorder(n.left);
System.out.println(n.data);
printInorder(n.right);
这是正确的答案,我只是不明白为什么它是正确的。
我明白,如果您在公共(public)方法中输入 printInorder(root) 。它将使用私有(private)方法并首先打印左侧,然后“System.out.println”所有数据。然后它会走到右侧,但是它如何在右侧打印数据呢?
预先感谢您的帮助!
最佳答案
解释了下面的递归模式。希望有助于理解正确的节点部分。
printInorder(1)
printInorder(2) //left node of 1
printInorder(4) //left node of 2
printInorder(null) // left node of 4. does not print anything.
System.out.println(4);
printInorder(null); // right node of 4
System.out.println(2);
printInorder(5); //referring right node of 2
printInorder(null); // left node of 5 . No print here
System.out.println(5);
printInorder(null); // right node of 5. No print here
System.out.println(1);
printInorder(3); // right node of 1
printInorder(6) // left node of 6
printInorder(null) // left node of 3. does no print here
System.out.println(6);
printInorder(null); // right node of 6 . No print here
System.out.println(3);
printInorder(7); //referring right node of 3
printInorder(null); // left node of 7 . No print here
System.out.println(7);
printInorder(null); // right node of 7. No print here
关于java - 二叉树递归PrintInOrder函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61096424/
我是一名优秀的程序员,十分优秀!