Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这段代码适用于二叉树中的Euler漫游吗?_Java_Binary Tree_Postorder - Fatal编程技术网

Java 这段代码适用于二叉树中的Euler漫游吗?

Java 这段代码适用于二叉树中的Euler漫游吗?,java,binary-tree,postorder,Java,Binary Tree,Postorder,我想用一个代码在二叉树中显示EulerTour。我编写了以下代码: public void EulerTour(Node parent , Node focusNode) { if(focusNode.left!= null) EulerTour(parent, focusNode.left); if(focusNode.right!= null) EulerTour(parent, focusNode.right); System.o

我想用一个代码在二叉树中显示EulerTour。我编写了以下代码:

public void EulerTour(Node parent , Node focusNode)
{
    if(focusNode.left!= null)
         EulerTour(parent, focusNode.left);
    if(focusNode.right!= null)
         EulerTour(parent, focusNode.right);
    System.out.println(focusNode);

}
但我有三个问题:

  • 欧拉之旅合适吗

  • 如果是,它似乎非常类似于树的后序遍历。对吧?

  • 如果它类似于后序遍历,那么我们使用2个单独的代码有什么区别

  • 提前谢谢

  • 我不这么认为
  • 非常相似,但不一样
  • 后序遍历如下所示
  • 探望左撇子
  • 看望合适的孩子
  • 访问当前节点
  • Euler walk如下所示:

  • 访问当前节点
  • 访问位于左侧子目录的子树
  • 访问当前节点(再次)
  • 访问根在右子树上的子树
  • 访问当前节点(再次)
  • 并不是说在Eulers walk中,每个节点都将被访问三次。您可以找到有关Eulers walk的更多信息

  • 我不这么认为
  • 非常相似,但不一样
  • 后序遍历如下所示
  • 探望左撇子
  • 看望合适的孩子
  • 访问当前节点
  • Euler walk如下所示:

  • 访问当前节点
  • 访问位于左侧子目录的子树
  • 访问当前节点(再次)
  • 访问根在右子树上的子树
  • 访问当前节点(再次)
  • 并不是说在Eulers walk中,每个节点都将被访问三次。你可以找到更多关于Euler行走的信息。

    < P>这里是C++代码< /P>
    void Euler_tour(TreeNode* root, vector<int>& result){
        if (root == NULL)
            return;
    
        result.push_back(root->data);
        if (root->left){
            Euler_tour(root->left, result);
            result.push_back(root->data);
        }
        if (root->right){
            Euler_tour(root->right, result);
            result.push_back(root->data);
        }
    }
    
    void Euler\u教程(树节点*根、向量和结果){
    if(root==NULL)
    返回;
    结果。推回(根->数据);
    如果(根->左){
    Euler_巡更(根->左,结果);
    结果。推回(根->数据);
    }
    如果(根->右){
    Euler_-tour(根->右,结果);
    结果。推回(根->数据);
    }
    }
    <代码> < p>这里是C++代码< /p>
    
    void Euler_tour(TreeNode* root, vector<int>& result){
        if (root == NULL)
            return;
    
        result.push_back(root->data);
        if (root->left){
            Euler_tour(root->left, result);
            result.push_back(root->data);
        }
        if (root->right){
            Euler_tour(root->right, result);
            result.push_back(root->data);
        }
    }
    
    void Euler\u教程(树节点*根、向量和结果){
    if(root==NULL)
    返回;
    结果。推回(根->数据);
    如果(根->左){
    Euler_巡更(根->左,结果);
    结果。推回(根->数据);
    }
    如果(根->右){
    Euler_-tour(根->右,结果);
    结果。推回(根->数据);
    }
    }