Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.89 KB | None | 0 0
  1. pb(T, R):-
  2.     cntNodes(T, T1),
  3.     oddNodes(T1, R).
  4.  
  5.  
  6. cntNodes(t(K, nil, nil), t(K, nil, nil, 1)).
  7.  
  8. cntNodes(t(Key, nil, R), t(Key, nil, t(RK, RL, RR, D2), D)):-
  9.     cntNodes(R, t(RK, RL, RR, D2)),
  10.     D is D2 + 1.
  11.  
  12. cntNodes(t(Key, L, nil), t(Key, t(LK, LL, LR, D1), nil, D)):-
  13.     cntNodes(L, t(LK, LL, LR, D1)),
  14.     D is D1 + 1.
  15.  
  16. cntNodes(t(Key, L, R), t(Key, t(LK, LL, LR, D1), t(RK, RL, RR, D2), D)):-
  17.     cntNodes(L, t(LK, LL, LR, D1)),
  18.     cntNodes(R, t(RK, RL, RR, D2)),
  19.     ND is D1 + D2,
  20.     D is ND + 1.
  21.  
  22. oddNodes(t(_, nil, nil, 1), []).
  23.  
  24. oddNodes(nil, []).
  25.  
  26. oddNodes(t(Key, nil, R, D), [Key|Res]):-
  27.     DH is D mod 2,
  28.     DH = 0,
  29.     oddNodes(R, Res).
  30.    
  31. oddNodes(t(Key, L, nil, D), [Key|Res]):-
  32.     DH is D mod 2,
  33.     DH = 0,
  34.     oddNodes(L, Res).
  35.  
  36. oddNodes(t(_, L, R, _), Res):-
  37.     oddNodes(L, Res1),
  38.     oddNodes(R, Res2),
  39.     append(Res1, Res2, Res).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement