Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static BST Algo_20171016(BST T, int a, int b)
- {
- if (T != null)
- {
- Console.WriteLine($"T: {T.key}, a: {a}, b: {b}");
- if (T.key >= a && T.key <= b)
- {
- T.sx = Algo_20171016(T.sx, a, T.key);
- T.dx = Algo_20171016(T.dx, T.key, b);
- }
- else
- {
- Cancella(T);
- T = null;
- }
- }
- return T;
- }
- public static BST Algo_20171016_Miky(BST T, int a, int b)
- {
- BST last = null;
- BST next = null;
- BST curr = T;
- var S = new Stack<BST>();
- var Sa = new Stack<int>();
- var Sb = new Stack<int>();
- while (S.Count > 0 || curr != null)
- {
- if (curr != null)
- {
- S.Push(curr);
- Sa.Push(a);
- Sb.Push(b);
- Console.WriteLine($"T: {curr.key}, a: {a}, b: {b}");
- if (curr.key >= a && curr.key <= b)
- {
- next = curr.Sx;
- b = curr.key;
- }
- else
- {
- var sono_sinistro = curr.Equals(last.sx);
- Cancella(curr);
- curr = null;
- next = null;
- S.Pop();
- Sa.Pop();
- Sb.Pop();
- if (sono_sinistro)
- last.sx = null;
- else
- last.dx = null;
- }
- }
- else
- {
- curr = S.Peek();
- a = Sa.Peek();
- b = Sb.Peek();
- if (curr.Dx != null && curr.Dx != last)
- {
- if (curr.key >= a && curr.key <= b)
- {
- next = curr.Dx;
- a = curr.key;
- }
- }
- else
- {
- next = null;
- S.Pop();
- Sa.Pop();
- Sb.Pop();
- }
- }
- last = curr;
- curr = next;
- }
- return T;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement