我想用基于这样的字符串填充带有整数的二叉树。
[int](LT)(RT)
LT是树的左侧部分的相同形式的表达式。与RT相同。有效的字符串将是这样的:4(2(1)(3))(6(5)(7)
。我怎么能填这棵树?这不是任何类型的排序树。所以它可以用节点填充每个“级别”。谢谢你的帮助。
答案 0 :(得分: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 );
}
}
答案 1 :(得分:0)
抓取字符串的第一个数字,拆分为'(',去掉尾随')',递归重复。
答案 2 :(得分:0)
使用堆栈跟踪'('和')'
将所有'('置于堆叠中并在遇到'时弹出')'。
从那里,你只需要决定如何解释你自己之间的东西。