熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

數據結構考研分類復習真題 第六章 樹和二叉樹 (三)[8]

2013-11-15 15:28:51  來源: 數據結構 

  .①二叉樹用來表示表達式因為需要保存各子樹的值修改二叉樹的結點結構為(LchildDataValRchild)其中LchildRchild的意義同前Val用來存放以該結點為根的子樹的值值的類型依具體情況而定為了簡便起見算法假定所考慮的表達式只有+*/ 四種二目運算且已表示成相應的二叉樹算法所計算的表達式值放在根結點的Val域中

  PROC  Postordereval(t:ptrType)
  BEGIN IF (t!=NULL)
  BEGIN  ()_______;  ()_______;
  CASE  t^data:
  +:   t^Val:=t^ Lchild^ Val + t^ Rchild ^ Val;   BREAK;
  :   t^Val:=t^ Lchild^ Val t^ Rchild ^ Val;   BREAK;
  *:   t^Val:=t^ Lchild^ Val * t^ Rchild ^ Val;   BREAK;
  /:   t^Val:=t^ Lchild^ Val / t^ Rchild ^ Val;   BREAK;
  otherwise: ()_____; BREAK;
  ENDCASE  END
  END;

  ②PROC  Delete(x:datatypeA:tree)
  BEGIN tempA:= ()_____;
  WHILE (tempA^Item!=x) AND (tempA!=NULL) DO
  IF (x<tempA^item) BEGIN r:=tempA; tempA:= ()_____; END
  ELSE BEGIN r:=tempA;tempA:=tempA^Rchild;END;//tempA為要刪結點r為tempA的父親
  IF ()_____ return(x);
  IF (tempA^Lchild!=NULL) AND (tempA^rchild!=NULL)
  BEGIN t:=tempA; q:=tempA^Rchild;
  WHILE (q^Lchild!=NULL) DO BEGIN t:=q; q:=q^Lchild; END;
  t^Lchild:= ()_____; //刪去q
  q^Lchild :=tempA^Lchild; q^Rchild:=tempA^Rchild;
  IF (tempA^item< r^item) r^Lchild := ()______ ELSE r^Rchild:=q //用q代替 tempA
  END;
  ELSE IF(tempA^Lchild!=NULL) IF(tempA^item<r^item) r^Lchild:=tempA^Lchild
  ELSE r^Rchild:=tempA^Lchild
  ELSE IF(tempA^Rchild!=NULL) IF(tempA^item<r^item) r^Rchild:= ()_____
  ELSE r^Lchild:=tempA^Rchild
  ELSE  //tempA為樹葉
  IF()_  r^Lchild:=NULL ELSE r^Rchild:=NULL
  END;  【中山大學 (分)】

[]  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/sjjg/201311/23479.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.