[英]Preorder traversal of a quadtree
So I know for a binary tree the general way to preorder traverse it is like this 所以我知道对于二叉树,遍历遍历的一般方法是这样的
void displayPreOrder(TreeNode node)
{
if(node != null)
{
displayPreorder(node.left);
displayPreorder(node.right);
System.out.println(node.value);
}
}
But I'm having trouble trying to wrap my head around a preorder traversal of a quadtree. 但是我在尝试绕四叉树的遍历遍历时遇到麻烦。 I've tried to find some resources, but left empty handed. 我试图找到一些资源,但是空手而归。 Any hint? 有什么提示吗?
The code you posted is for a post order traversal of a binary tree. 您发布的代码是一个二叉树的后序遍历。 For a quadtree, you just need to visit all children instead of just left and right. 对于四叉树,您只需要访问所有孩子,而不只是左右。
For simplicity, I'll assume that TreeNode
defines a method children()
that returns an iterator or a List
of the node's children in some well-defined order. 为简单起见,我假设TreeNode
定义了一个children()
方法,该方法以某种定义良好的顺序返回迭代器或节点子级的List
。 If that's not available, just iterate through the children using whatever mechanism is available. 如果那不可用,请使用可用的任何机制遍历子级。
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)
}
}
}
(PS This works for binary trees as well, given the right iteration mechanism.) (PS,如果具有正确的迭代机制,它也适用于二叉树。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.