Cần giúp đỡ: sửa lỗi khi chuyển biểu thức inFix sang binary tree expression
Em có làm 1 class Expression trong đó chứa các trường như sau:
string inFix;
string preFix;
string postFix;
node* tree;
Em gặp vấn đề trong method convert_to_tree() từ biểu thức inFix. Em làm theo hướng dẫn ở trang này: http://yinyangit.wordpress.com/2011/01/28/algorithm-tạo-va-su-dung-cay-biểu-thức-expression-tree/
và đây là link down file em làm: http://www.mediafire.com/download/1hcqx51879zp14d/Expression+C++.rar
Mọi người ai rãnh thì xem hộ em với ạ! Em xin cảm ơn!
(Do em làm theo cách em hiểu nên ko có ghi thêm chú thích sau dấu “//”, mọi người không hiểu ý em ở đoạn nào cứ nói để em nêu ý kiến của em)
Giả sử xâu inFix có độ dài lớn. Bạn gọi strlen quá nhiều lần trong Expression là không cần thiết. Việc bạn gọi
...Fix.data()
cũng tương tự. Nó sẽ mất thời gianO(n)
cho mỗi lần gọi. Bạn có thể goistr.length()
chỉ tốnO(1)
thôi.Việc có
string postFix
rồi thì chuyển sang cây rất đơn giản. Không cầnsub_tree
haycopy_tree
gì cả.Tôt hơn bạn nên chuyển từ xâu sang
{operator,operand,brack}
. rồi chuyển sang inFix,preFix sẽ đễ hơn.Mình nghĩ code của bạn rắc rối ở chỗ chuyển sang cây thôi.