我想在二叉树中显示一个显示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);
}
但我有3个问题:
欧拉之旅是否合适?
如果是,它似乎与postOrder Traverse of tree非常相似。右
如果它与post order traverse类似,那么我们使用2个分隔代码有什么区别?
提前致谢
答案 0 :(得分:3)
欧拉步行如下:
- 访问左孩子
- 访问正确的孩子
- 访问当前节点
醇>
- 访问当前节点
- 访问以左子女为根的子树
- 访问当前节点(再次)
- 访问根据右孩子的子树
- 访问当前节点(再次)
醇>
并非在Eulers步行中每个节点都会被访问三次。您可以找到有关Eulers walk here的更多信息。
答案 1 :(得分:2)
这是C ++代码
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);
}
}