遍历java中的非二叉树

use*_*918 15 java tree

我有一棵不是二叉树的树,每个节点都有2个以上的孩子,我正在寻找一个遍历树的算法,我是学习数据结构的新手,我知道如何遍历二叉树但是我迷路了当涉及遍历非二叉树时.任何人都能给我一个暗示吗?

Lit*_*ild 23

在非二叉树中,将有一个Vector或一些其他结构引用所有子项.像这样制作一个递归方法:

public void traverse(Node child){ // post order traversal
    for(Node each : child.getChildren()){
        traverse(each);
    }
    this.printData();
}
Run Code Online (Sandbox Code Playgroud)

沿着那条线的东西.

  • 这将进行后序遍历.在for循环之前放置printData会导致前序遍历. (5认同)

Jos*_*eph 8

您将需要使用递归,因为您无法确定每个节点(广度)的子项数或树的行程(深度).根据您想要遍历的方式,您可以使用 广度优先搜索深度优先搜索.

有关此主题的信息量很大,因此请尝试实施其中一种递归方法,如果您遇到麻烦,请回来!


Tar*_*rik 8

好吧,当遍历二叉树时,按预先顺序访问父节点,然后递归遍历左子树,然后递归遍历右子树.对于一个有两个以上孩子的树,你递归地遍历每个孩子所领导的子树.你可以在for循环中进行递归调用.