【问题标题】:traversal method with a return value带返回值的遍历方法
【发布时间】:2015-05-08 17:33:06
【问题描述】:

对于树,在遍历方法中,我希望返回值。我尝试的方法只返回一个值。

 int inorder(BSTNode r) {
   int result = 0 ;
    if (r != null) {
        inorder(r.getLeft());
     result= r.getData();
        inorder(r.getRight());  
    }
   return result;
}

此代码完美运行,但我希望该方法返回值而不是

private void inorder(BSTNode r) {
    if (r != null) {
        inorder(r.getLeft());
        System.out.print(r.getData() + " ");
        inorder(r.getRight());
    }
}

【问题讨论】:

  • “价值观”是什么意思?
  • 我的树中的节点“数据”
  • 你目前有。确切地说,树的根,因为您既没有使用左孩子的数据,也没有使用右孩子的数据。您的预期输出究竟是什么? r.getData() 返回什么?
  • 按顺序排列树的所有节点: 1. 转到左子树,并对该节点执行中序遍历。 2.打印出当前节点的值。 3. 转到右子节点,然后对该右子节点的子树进行中序遍历。

标签: tree inorder


【解决方案1】:

你想使用某种列表结构来积累数据:

void inorder(BSTNode r, List list) {
  if (r != null) {
    inorder(r.getLeft(), list);
    list.add(r.getData());
    inorder(r.getRight(), list);
  }
}

调用函数

List list = new List();
inorder(bst, list);

inorder 完成后,list 将包含树的值。

确切的语法取决于您使用的语言。

【讨论】:

  • java,在调用我应该发送到列表的方法时,正确的 inorder(root, null)
  • 对于 java,您将创建一个列表 List<T> list = new ArrayList<T>(),然后调用 inorder(bst, list),其中 T 是存储在树中的数据类型
猜你喜欢
  • 2022-01-17
  • 2020-06-18
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 2020-01-06
  • 2017-04-02
  • 1970-01-01
  • 2020-09-13
相关资源
最近更新 更多