Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static int Algo_24_02_2017_T2(BST T, BST P, int x)
- {
- BST last = null;
- var S = new Stack<BST>();
- var R = new Stack<int>();
- var n_figli = new Stack<bool[]>();
- var ret = 0;
- while (S.Count > 0 || T != null)
- if (T != null)
- {
- n_figli.Push(new bool[] {
- (T.Sx == null ? false : true),
- (T.Dx == null ? false : true)
- });
- S.Push(T);
- T = T.Sx;
- }
- else
- {
- T = S.Peek();
- if (T.Dx != null && T.Dx != last)
- T = T.Dx;
- else
- {
- S.Pop();
- P = (S.Count > 0 ? S.Peek() : null);
- var figli = n_figli.Pop();
- var r_sx = (figli[0] ? R.Pop() : 0);
- var r_dx = (figli[1] ? R.Pop() : 0);
- ret = r_sx + r_dx + 1;
- System.Console.WriteLine($"n: {T.key} | ret: {ret}");
- R.Push(ret);
- last = T;
- if (T.key % 2 == 0 && ret < x && P != null)
- {
- if (T == P.dx)
- {
- P.dx = Cancella(T);
- last = P.dx;
- }
- else
- {
- P.sx = Cancella(T);
- last = P.sx;
- }
- }
- T = null;
- }
- }
- return ret;
- }
Add Comment
Please, Sign In to add comment