0

我想用基于这样的字符串的整数填充二叉树。

 [int](LT)(RT)

LT 是树的左侧部分的相同形式的表达式。与 RT 相同。一个有效的字符串应该是这样的:4(2(1)(3))(6(5)(7). 我怎样才能填满这棵树?这不是任何种类的排序树。所以它可以用节点填充每个“级别”。谢谢你的帮助。

4

3 回答 3

2

您必须为此创建一个解析器,并使用解析器的指令填充某种数据结构。

然后,当您的数据结构被填充时,您只需将其推入树中。

类似的东西:

 Structure s = Parser.parse("4(2(1)(3))(6(5)(7)");

然后迭代结构。

  Tree binaryTree = ...

  for( Instruction i : s ) {

      if( i.leaf == Tree.LEFT ) {
          tree.addLeft( i.value );
      } else if ( i.leaf == Tree.RIGHT ) {
           tree.addRight( i.value );
      }
  }
于 2009-10-15T22:04:19.537 回答
0

抓住字符串的第一个数字,在'('上分割,去除尾随')',递归重复。

于 2009-10-15T22:02:16.213 回答
0

使用堆栈来跟踪 '(' 和 ')'

将所有的 '(' 压入堆栈并在遇到 ')' 时弹出。

从那里,你只需要决定如何为自己解释中间的东西。

于 2011-05-16T13:02:46.690 回答