我想用基于这样的字符串的整数填充二叉树。
[int](LT)(RT)
LT 是树的左侧部分的相同形式的表达式。与 RT 相同。一个有效的字符串应该是这样的:4(2(1)(3))(6(5)(7)
. 我怎样才能填满这棵树?这不是任何种类的排序树。所以它可以用节点填充每个“级别”。谢谢你的帮助。
我想用基于这样的字符串的整数填充二叉树。
[int](LT)(RT)
LT 是树的左侧部分的相同形式的表达式。与 RT 相同。一个有效的字符串应该是这样的:4(2(1)(3))(6(5)(7)
. 我怎样才能填满这棵树?这不是任何种类的排序树。所以它可以用节点填充每个“级别”。谢谢你的帮助。
您必须为此创建一个解析器,并使用解析器的指令填充某种数据结构。
然后,当您的数据结构被填充时,您只需将其推入树中。
类似的东西:
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 );
}
}
抓住字符串的第一个数字,在'('上分割,去除尾随')',递归重复。
使用堆栈来跟踪 '(' 和 ')'
将所有的 '(' 压入堆栈并在遇到 ')' 时弹出。
从那里,你只需要决定如何为自己解释中间的东西。