题目:遍历树结构所有叶结点
假设有树一棵
root
nodeA
leafA1
leafA2
nodeB
nodeB1
leafB11
nodeB2
leafB22这个算法要把nodeA节点下的叶节点leafA1和leafA2
nodeB1节点下的leafB11
nodeB2节点下的leafB22显示出来,其它的不显示该如何实现这道题让我的智商为0,神阿救救我吧!
假设有树一棵
root
nodeA
leafA1
leafA2
nodeB
nodeB1
leafB11
nodeB2
leafB22这个算法要把nodeA节点下的叶节点leafA1和leafA2
nodeB1节点下的leafB11
nodeB2节点下的leafB22显示出来,其它的不显示该如何实现这道题让我的智商为0,神阿救救我吧!
{
.....
}class LeafNode implements Node
{
.....
}class RootNode implements Node
{
private List<Node> nodes;
public List<Node> getChildren()
{
return nodes;
}
....
}下面遍历一个RootNode
public void iterateNode(RootNode root)
{
for (Node node : root.getChildren())
{
if (node instanceof RootNode)
{
iterateNode((RootNode) node);
}
else
{
showLeaf((LeafNode) node);
}
}
}
public void iterateNode(RootNode root)
{
Queue<RootNode> queues = new ArrayList();
queues.offer(root);
while (!queues.isEmpty())
{
RootNode rootNode = queues.remove();
for (Node node : rootNode.getChildren())
{
if (node instanceof RootNode)
{
queues.offer((RootNode) node);
}
else
{
showLeaf((LeafNode) node);
}
}
}
}