0

これは宿題の質問です。残りのコードはほぼ完了しています。最後に行う必要があるのは、挿入アルゴリズムを作成することです。

insert(I,T1,T2) - is true if T2 is the binary tree resulting from I being 
inserted into binary tree T1.

これまでのところ、この部分の私のコードは...

    insert(I,T1,T2) :- bTTree(T1(X,L,_), bTTree(T2(X,L,I).
    insert(I,T1,T2) :- bTTree(T1(nil,nil,nil),bTTree(T2(I,nil,nil).
    insert(I,T1,T2) :- bTTree(T1(X,L,_),bTTree(T2(X,L,I).

これで正しい方向に進んでいるかどうかはわかりません。どんな助けでも大歓迎です。

私の完成したコード(必要な場合):

isempty(nil) :- !.
isempty(tree(nil,nil,nil)).

bTTree(tree(_,Left,Right)) :- binaryTree(Left), binaryTree(Right).

%トラバーサル。

%preorder -- N、左、右

preorder(tree(N,_,_),N).
preorder(tree(_,Left,_),N) :- preorder(Left,N).
preorder(tree(_,_,Right),N) :- preorder(Right,N).

%inorder -- 左、N、右。

inorder(tree(_,Left,_), N) :- inorder(Left,N).
inorder(tree(N,_,_), N).
inorder(tree(_,_,Right), N) :- inorder(Right,N).

%postorder -- 左、右、N

postorder(tree(_,Left,_),N) :- postorder(Left,N).
postorder(tree(_,_,Right),N) :- postorder(Right,N).
postorder(tree(N,_,_),N).


search(t,I) :- bTTree(t(I,_,_)).
search(t,I) :- bTTree(t(_,I,_)).
search(t,I) :- bTTree(t(_,_,I)).
search(t,I) :- bTTree(t(_,N,_)), search(N,I).
search(t,I) :- bTTree(t(_,_,N)), search(N,I).


height(t,H) :- bTTree(t(nil,nil,nil)), H is 0.
height(t,H) :- bTTree(t(N,nil,nil)), H is 1.
height(t,H) :- bTTree(t(_,Left,Right)),
               height(Left, H1),
           height(Right, H2),
               H is max(H1,H2) + 1.

insert(I,t1,t2) :- bTTree(t1(X,L,_)),    
                   bTTree(t2(X,L,I)).
insert(I,t1,t2) :- bTTree(t1(nil,nil,nil)),
                   bTTree(t2(I,nil,nil)).
insert(I,t1,t2) :- bTTree(t1(X,L,_)),
                   bTTree(t2(X,L,I)).
4

1 に答える 1