当前位置: 首页 > 知识库问答 >
问题:

二叉搜索树上的预序遍历

尹何平
2023-03-14

对于二叉搜索树:7为根,1为左子,10为右子。

                                        7
                                      1   10

我试过调试这个函数,看看它是如何工作的,但我似乎不能理解一件事。函数检查并看到1的左子项和右子项都为空后,它就移动到节点10,然后检查右子项是否为空。有人能解释一下递归模式,以及为什么方法在初始检查节点1后没有退出。

private void preOrderTraversal(Node node)
{       
    if(node == null) return; 
    System.out.println(node.data);
    preOrderTraversal(node.leftChild);
    preOrderTraversal(node.rightChild);
}

共有1个答案

蔡理
2023-03-14

方法preordertraversal(以Node=1作为参数调用,即以左边的子项调用)确实存在,但随后控制流跳回到调用它的方法,即preordertraversal(以Node=7作为参数调用根)。所以一切都很好。

添加这几行跟踪代码,您就会
明白我的意思,一切都会变得清晰起来。

private void preOrderTraversal(Node node)
{
    System.out.println("Now in preOrderTraversal with " + 
                       (node==null ? "null." : node.data + "."));
    if(node == null) {
        System.out.println("Done. Exit 1 taken.");
        return;
    }
    System.out.println(node.data);
    preOrderTraversal(node.leftChild);
    preOrderTraversal(node.rightChild);
    System.out.println("Done. Exit 2 taken.");
}
 类似资料:
  • 编写一个函数,如果给定的二叉搜索树包含给定的值,则返回1,否则返回0。 例如,对于以下树: N1(值:1,左:null,右:null) n2(值:2,左:n1,右:n3) N3(值:3,左:null,右:null) 对contains(&n2,3)的调用应返回1,因为根位于n2的树包含编号3。 函数应该返回1,然而,它返回0或者根本不返回。

  • //执行顺序遍历的递归方法

  • NowCoder 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。假设输入的数组的任意两个数字都互不相同。 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 解题思路 // java public boolean VerifySquenceOfBST(int[] sequence) { if (sequence == null || sequence.l

  • 一、题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。 二、解题思路 在后序遍历得到的序列中, 最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分: 第一部分是左子树结点的值,它们都比根结点的值小: 第二部分是右子树结点的值,它们都比根结点的值大。 三、解题代码 public class

  • 树的特征和定义 树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树: 树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。树像是一个不断分叉的树根。 每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent)。比如说,3,5是6的子节点,6是3,

  • 下面是将二叉查找树的前序遍历转换为原始树的代码。 下面的代码采用整数数组,表示二进制搜索树的预序遍历。返回构造树的根。 来源:http://www . geeks forgeeks . org/construct-BST-from-given-preorder-traversal-set-2/ 我无法理解此代码。有人能帮我理解以下内容吗 > 在任何给定的迭代中,堆栈中存储的值与指出的当前值相关 从