【发布时间】:2014-12-20 15:45:55
【问题描述】:
我已经实现了一种对树进行前序遍历的方法,该树不是二叉树。这棵树的每个父节点都有一个子节点数组,所以这是我正在使用的方法:
void preorderTraversal(TreeNode tree)
{
if (tree == null)
return;
System.out.print(tree.element + " ");
for(TreeNode child : tree.childern) // children is an Arraylist
{
preorderTraversal(child);
}
}
将子节点链接到父节点“tnAA”的示例
/* Creating Object of class tree*/
Tree tree = new Tree();
tree.setRoot(tnAA);
TreeNode root2 = tree.getRoot();
/* creating the links between nodes of Tree*/
ArrayList<TreeNode> AA_children = new ArrayList<TreeNode>();
AA_children.add(tnBB);
AA_children.add(tnCC);
AA_children.add(tnDD);
tnBB.parent=tnAA; tnCC.parent = tnAA; tnDD.parent = tnAA;
// Tree
// A
// / | \
// B C D
// /\ |
// E F G
但是它只输出根节点,这个方法有什么问题?
解决方案:将子数组链接到每个父数组:tnAA.setChildern(AA_childern);
【问题讨论】:
-
也许你的错误在于树的构建
-
大概 'childern' 是空的。
标签: recursion tree multiway-tree