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