デプストラバーサルのレビュー(1次、中次、2次)

1  クラスノード(オブジェクト):
 2      「」「ノードが左の子および右側の子を有する定義「」」
3。     DEF  __init__ (セルフ、データ):
 4つの         #1 ノードデータ
5。          self.data = データ
 6。          左右子はヌルポイントである
7。          self.lchild = なし
 8。          self.rchild = なし
 9。 
10  クラスBinaryTree(オブジェクト):
 11      '' ' バイナリ' '' 
12である     DEF  __init__ (自己):
 13である         ルートノードは、デフォルトでは空である
14          の自己。 root = なし
15  
16      DEF 追加(セルフ、データ):
 17の         最終的に二分木にデータを追加するために、追加データ
18          親ノードが子および右側の子左:処理順序
。19          ノード= ノード(データ)
 20は、         空の木場合
21は         IFセルフ.Rootはありませんなし:
 22である              self.root = ノード
 23は、             空のツリーは、ルートノードに追加されたデータ
24              リターン
25          キュー= [self.root]
 26である         ノードの存在の徴候として、ルート・ノードを追加する
27          一方キュー:
 28              キューが空でない場合は
29              cur_nodeを=queue.pop(0)
 30              現在のルートノード点、最初の要素テイク
31は             IF cur_node.lchildはしないなし:
 32                  左空ノード場合
33である                  cur_node.lchild = ノード
 34は                 リターン
35              36                  #の追加左ノードの存在を証明するためのポインタ
37 [                  queue.append(cur_node.lchild)
 38が             IF cur_node.rchildはしないなし:
 39                  右のノードが空の場合は
40                  cur_node.rchild = ノード
 41は                 リターン
42は、             43のIS                 右接合部の存在証明、ポインタに追加
44がある                 (cur_node.rchild)queue.append
 45  
46は     DEF (セルフ、ノード)pre_order:
 47          「」「行きがけ- >ルートについて」「」
48          IFノードはありませんなし:
 49              リターン
50          プリント(node.data、エンド= "  " 51である         self.pre_order(ノード、lchild)
 52である         #は戻りトラバース直後、再帰左ノードを有する
53である         self.pre_order(ノード、rchild)
 54である         横断右空になるまで
55  
56      def in_order(self、node):
 57          '' '予約限定- >ルートは左と右の'' ' 
58          IFノードはありませんなし:
 59              リターン
60          self.in_order(ノード、lchild)
 61がある         再帰左ノードた
62が         印刷(node.data、エンド= "  " 63がある         印刷出力データ
64          self.in_order(node、rchild)
 65          右のデータをトラバースする
66  
67  
68      def post_order(self、node):
 69          '' ' ポストオーダーのトラバーサル->左と右のルート' '' 
70         ノードない場合71 return 72             
         self.post_order(ノードlchild)
 73は、         再帰左ノード持つ
74          self.post_order(ノード、rchild)
 75          ノードを再帰的に正しいされている
76          プリント(node.data、エンド= "  "

2020-04-18

おすすめ

転載: www.cnblogs.com/hany-postq473111315/p/12725386.html