【问题标题】:Preorder traversal of a quadtree四叉树的前序遍历
【发布时间】:2017-03-14 22:14:01
【问题描述】:
所以我知道对于二叉树来说,预排序遍历它的一般方法是这样的
void displayPreOrder(TreeNode node)
{
if(node != null)
{
displayPreorder(node.left);
displayPreorder(node.right);
System.out.println(node.value);
}
}
但是我在试图围绕四叉树的前序遍历时遇到了麻烦。我试图找到一些资源,但空手而归。有什么提示吗?
【问题讨论】:
标签:
java
recursion
tree
tree-traversal
quadtree
【解决方案1】:
您发布的代码用于发布二叉树的顺序遍历。对于四叉树,您只需要访问所有子节点,而不仅仅是左右访问。
为简单起见,我假设TreeNode 定义了一个方法children(),它以某种明确定义的顺序返回一个迭代器或节点的子节点的List。如果这不可用,只需使用任何可用的机制遍历子代。
void displayPreOrder(TreeNode node)
{
if(node != null)
{
// visit the root first for pre-order
System.out.println(node.value);
for (TreeNode child : node.children()) {
displayPreorder(child)
}
}
}
(P.S. 考虑到正确的迭代机制,这也适用于二叉树。)