【发布时间】:2015-10-01 19:22:47
【问题描述】:
假设我在一棵树中有一个节点,如何获取祖先是这个节点的所有叶子节点?
我已经这样定义了 TreeNode:
public class TreeNode<T>
{
/** all children of the node */
private List<TreeNode<T>> children = new ArrayList<TreeNode<T>>();
/** the parent of the node, if the node is root, parent = null */
private TreeNode<T> parent = null;
/** the stored data of the node */
private T data = null;
/** the method I want to implement */
public Set<TreeNode<T>> getAllLeafNodes()
{
Set<TreeNode<T>> leafNodes = new HashSet<TreeNode<T>>();
return leafNodes;
}
}
【问题讨论】:
-
继续遍历childrens,所有那些children list为空的children都离开了吗?有什么问题?
-
叶节点应该有一个空的子节点列表;所以你可以在你的节点上实现一个方法 isLeaf() 。然后你将不得不递归地检查你节点的所有子节点。
标签: java