Data structures 顺序树遍历问题

Data structures 顺序树遍历问题,data-structures,graph-algorithm,tree-traversal,inorder,Data Structures,Graph Algorithm,Tree Traversal,Inorder,我在维基百科上找到了这张图片: 根据图片下方的文字,顺序是:A、B、C、D、E、F、G、H、I 我了解A-F的顺序,但我不了解最后三个节点的顺序。不应该是H,I,G吗?我以为你应该在第二次相遇时列出内部节点,然后在第一次相遇时离开 编辑:如果图片中的树是普通树而不是二叉树,我的顺序是否正确?(因此G只有一个节点,而不是右节点和空左节点。)为了使遍历工作如下: 1- print the left sub tree. 2- print the root. 3- print the right sub

我在维基百科上找到了这张图片:

根据图片下方的文字,顺序是:A、B、C、D、E、F、G、H、I

我了解A-F的顺序,但我不了解最后三个节点的顺序。不应该是H,I,G吗?我以为你应该在第二次相遇时列出内部节点,然后在第一次相遇时离开


编辑:如果图片中的树是普通树而不是二叉树,我的顺序是否正确?(因此G只有一个节点,而不是右节点和空左节点。)

为了使遍历工作如下:

1- print the left sub tree.
2- print the root.
3- print the right sub tree
在您提供的示例中:

1- the left sub-tree of `G` is empty, so we do not print any thing.
2- we print the node `G`.
3- finally we print the right sub-tree of `G`

为了使遍历工作如下:

1- print the left sub tree.
2- print the root.
3- print the right sub tree
在您提供的示例中:

1- the left sub-tree of `G` is empty, so we do not print any thing.
2- we print the node `G`.
3- finally we print the right sub-tree of `G`

维基百科提到的答案是正确的。你说你理解A-F,所以我会从G那里得到


按顺序遍历遵循序列:左父右。因此,当遍历F时,算法转到F的右子代,它首先遇到G,然后尝试定位G的左子代。由于G的左子代为null,因此不打印任何内容,然后它转到父代,即G;所以G被打印出来了。现在,它转到G的右子级,即I。现在,它找到I的左子级,即H,并打印它。然后它返回到父级,即I并打印它。然后它遍历到I的右边,发现它为null。现在,当所有节点都被遍历时,算法终止。因此顺序是G H I

维基百科提到的答案是正确的。你说你理解A-F,所以我会从G那里得到


按顺序遍历遵循序列:左父右。因此,当遍历F时,算法转到F的右子代,它首先遇到G,然后尝试定位G的左子代。由于G的左子代为null,因此不打印任何内容,然后它转到父代,即G;所以G被打印出来了。现在,它转到G的右子级,即I。现在,它找到I的左子级,即H,并打印它。然后它返回到父级,即I并打印它。然后它遍历到I的右边,发现它为null。现在,当所有节点都被遍历时,算法终止。因此顺序是G H I

不幸的是,维基百科是对的

详细算法

你在哪里漏掉了重点/走错了方向? 从F到达G时,您尝试输入G的左子级,该子级为NULL(简而言之,
inoder\u遍历(node->left)
语句失败,因为算法已选中了
if(node!=NULL)
并且G的左子级为NULL,因此在这之后,它再次返回到G,之后,您忽略了将G打印在那里的print语句-忽略该print语句后,您跳到下一个语句,检查node->right是否为NULL-您发现它不是NULL(它把你带到了I)。然后你没有直接打印I并检查它的左子项。因为左子项H在那里,所以你打印了它,然后返回到I——父项,它的右子项为空。因此维基百科是正确的

顺序遍历测试提示
:制作一个二叉树,它接受整数(通常是数字)作为输入数据,当您以有序方式遍历时,数字将按升序打印。

不幸的是,维基百科是正确的

详细算法

你在哪里漏掉了重点/走错了方向? 从F到达G时,您尝试输入G的左子级,该子级为NULL(简而言之,
inoder\u遍历(node->left)
语句失败,因为算法已选中了
if(node!=NULL)
并且G的左子级为NULL,因此在这之后,它再次返回到G,之后,您忽略了将G打印在那里的print语句-忽略该print语句后,您跳到下一个语句,检查node->right是否为NULL-您发现它不是NULL(它把你带到了I)。然后你没有直接打印I并检查它的左子项。因为左子项H在那里,所以你打印了它,然后返回到I——父项,它的右子项为空。因此维基百科是正确的

顺序遍历测试提示 :制作一个二叉树,它接受整数(通常是数字)作为输入数据,当您以有序方式遍历时,数字将按升序打印