-3

我正在尝试按如下方式打印我的 AVLtree,

. 50

55

. . 60

. 65

. . 70

– 节点的条目前面应该有点的深度数,其中深度表示树中节点的深度。

root 包含 55 和 left child 包含 50 , right child 包含 65 , right left child 包含 60 并且 right-right child 包含 70 。

以下是我到目前为止的代码。任何人都可以帮忙吗?

public string Display() {
    StringBulder sb= new StringBulder();
    inOrder (node,1,sb);
    return sb.toString();
}

// inorder traversal
public void inOrder (AVLNode<E> node, int depth, StringBuilde sb) {
    for (int i=1;i < depth; i++){
        sb.append(".");
    }

    if(node == null) return;

    inOrder(node.getleft(), depth+1,sb);
    sb.append(node.data);
    inOrder(node.getright(),depth+1,sb); 
}
4

2 回答 2

1

这很容易。只需将左右节点的深度增加 1,并将点的深度数附加到sb. 然后追加数据。以递归方式执行此操作。

于 2012-04-07T05:10:13.367 回答
1

这是代码:

void inOrder(AVLNode node, int depth, StringBuilder sb)
{
  if(node == null) return;

  inOrder(node.left, depth+1, sb);

  for(int a=0;a<depth;a++) sb.append(".");
  sb.append(node.data + "\n");

  inOrder(node.right, depth+1, sb);

}
于 2012-04-07T05:12:37.673 回答