简体   繁体   English

四叉树的遍历遍历

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM