返回首页

某二叉树中序序列为ABCDEFG,后序序列为BDCAFGE,则前序序列是?

来源:www.fushi86.com  时间:2023-09-21 18:53   点击:291  编辑:admin   手机版

某二叉树中序序列为ABCDEFG,后序序列为BDCAFGE,则前序序列是?

EACBDGF

1.由后序,E是整个二叉树的根。然后在中序里划分:

~~~~~~~~~~~E

~~~~~~~~~~/~\

~~~~~(BDCA)(FG)

2.后序,A是左子树的根,然后在中序里ABCD判断A没有左子树:

~~~~~~~~~~E

~~~~~~~~~/~\

~~~~~~~~A (FG)

~~~~~~~~~\

~~~~~~~~(BDC)

3.同2可得:(F不知左右)

~~~~~~~~~~~ E

~~~~~~~~~~/ \

~~~~~~~~~A G

~~~~~~~~~~\ |

~~~~~~~~~~~C F

~~~~~~~~~~/~\

~~~~~~~~~B~~~D

4.根据GF中序序列所知F应该为G的左节点:

~~~~~~~~~~~ E

~~~~~~~~~~/~ \

~~~~~~~~~A~~~ G

~~~~~~~~~~\~~ /

~~~~~~~~~ C~~ F

~~~~~~~~~/~ \

~~~~~~~~B~~~ D

前序序列应为EACBDGF

用delphi做一个简单计算器

java我还没学,delphi会一点,这是计算器的源代码,界面你就自己做了 procedure tform1.formcreate(sender: tobject); begin button0.click; end; procedure tform1.button11click(sender: tobject); begin if point_flag=false then begin input_number(10); point_flag:=true; end; end; procedure tform1.button29click(sender: tobject); begin s_source_1:='0'; s_source_2:='0'; s_result:='0'; result:=0; point_flag:=false; operation_symbol:=0; input_2:=false; display_refresh(); end; procedure tform1.button15click(sender: tobject); begin operation_over:=true; source_1:=strtofloat(s_source_1); if input_2 then begin source_2:=strtofloat(s_source_2); end else begin // source_2:=source_1; // s_source_2:=floattostr(source_2); end; case operation_symbol of 0: begin result:=source_1; display_refresh(); exit; end; 1: begin result:=source_1+source_2; display_refresh(); end; 2: begin result:=source_1-source_2; display_refresh(); end; 3: begin result:=source_1 * source_2; display_refresh(); end; 4: begin if source_2 = 0 then begin messagebox(form1.handle,'0 不能做除数','错误!',0); exit; end; result:=source_1 / source_2; display_refresh(); end; end; input_2:=false; source_1:=result; s_source_1:=floattostr(result); s_source_2:='0'; point_flag:=false; end; procedure tform1.button19click(sender: tobject); begin if result>=0 then begin operation_over:=true; result:=sqrt(result); display_refresh(); if input_2=true then begin source_2:=result; s_source_2:='0'; input_2:=false; end else begin s_source_1:=floattostr(result); end; end else begin messagebox(form1.handle,'负数不能开根号','错误!',0); end; end; pro定郸翅肝俨菲愁十传姜cedure tform1.button30click(sender: tobject); begin if (operation_symbol >0) and (input_2 = true) then begin button15.click; end; operation_symbol:=1; // source_2:=0; // s_source_2:='0'; point_flag:=false; operation_over:=false; end; procedure tform1.button14click(sender: tobject); begin if (operation_symbol >0) and (input_2 = true) then begin button15.click; end; operation_symbol:=2; // source_2:=0; // s_source_2:=floattostr(source_2); point_flag:=false; operation_over:=false; end; procedure tform1.button13click(sender: tobject); begin if (operation_symbol >0) and (input_2 = true) then begin button15.click; end; operation_symbol:=3; // source_2:=0; // s_source_2:=floattostr(source_2); point_flag:=false; operation_over:=false; end; procedure tform1.button12click(sender: tobject); begin if (operation_symbol >0) and (input_2 = true) then begin button15.click; end; operation_symbol:=4; // source_2:=0; // s_source_2:=floattostr(source_2); point_flag:=false; operation_over:=false; end; procedure tform1.button24click(sender: tobject); begin if result <> 0 then begin operation_over:=true; result:=1 / result; display_refresh(); if input_2=true then begin source_2:=result; s_source_2:='0'; input_2:=false; end else begin s_source_1:=floattostr(result); end; end else begin messagebox(form1.handle,'0 不能求倒数','错误!',0); end; end; procedure tform1.button28click(sender: tobject); begin if input_2 = true then begin s_source_2:='0'; source_2:=0; result:=0; display_refresh(); end else begin s_source_1:='0'; source_1:=0; result:=0; display_refresh(); end; end; procedure tform1.button10click(sender: tobject); begin result:=(-1)*result; if input_2 then begin source_2:=result; s_source_2:=floattostr(source_2); end else begin s_source_1:=floattostr(result); end; display_refresh(); end; procedure tform1.button27click(sender: tobject); begin if input_2 = false then begin if length(s_source_1)>2 then begin delete(s_source_1,length(s_source_1),1); result:=strtofloat(s_source_1); display_refresh(); exit; end; if length(s_source_1)<=3 then begin result:=strtofloat(s_source_1); if result <= 0 then begin s_source_1:='0'; end; if result>0 then begin delete(s_source_1,length(s_source_1),1); result:=strtofloat(s_source_1); end; display_refresh(); end; end else begin end; end; end. 实在不行再问我要完整的,我的邮箱345053709@qq.com

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片
上一篇:返回栏目
热门图文