private int TailID(NodeEntity arg) { int ret = arg.GetNodeID(); int count = arg.GetChildren().Count; if (count > 0) { ret = TailID(arg.GetChildren()[count - 1]); } return(ret); }
private NodeEntity FindTail(NodeEntity node, int depth) { if (depth == 1) { return(node); } else { depth--; int count = node.GetChildren().Count; return(FindTail(node.GetChildren()[count - 1], depth)); } }
public NodeEntity FindTail(int depth) { NodeEntity ret = this; if (depth == 1) { return(ret); } depth--; int count = ret.GetChildren().Count; return(FindTail(ret.GetChildren()[count - 1], depth)); }
public void RemoveByID(int arg) { NodeEntity p = FindByID(arg).GetParent(); if (p == null) { return; } for (int i = 0; i < p.GetChildren().Count; i++) { if (p.GetChildren()[i].GetNodeID() == arg) { p.GetChildren().RemoveAt(i); Refresh(); return; } } }
public void MoveByID(int moveFrom, int moveTo) { if (moveFrom == moveTo) { return; } NodeEntity nf = FindByID(moveFrom); if (nf == null) { return; } NodeEntity pf = nf.GetParent(); if (pf == null) { return; } NodeEntity pt = FindByID(moveTo).GetParent(); if (pt == null) { return; } nf = nf.Clone(); for (int j = 0; j < pf.GetChildren().Count; j++) { if (pf.GetChildren()[j].GetNodeID() == moveFrom) { pf.GetChildren().RemoveAt(j); break; } } for (int i = 0; i < pt.GetChildren().Count; i++) { if (pt.GetChildren()[i].GetNodeID() == moveTo) { pt.GetChildren().Insert(i, nf); break; } } Refresh(); }
public void MoveUpByID(int arg) { NodeEntity p = FindByID(arg).GetParent(); if (p == null) { return; } for (int i = 0; i < p.GetChildren().Count; i++) { if (p.GetChildren()[i].GetNodeID() == arg) { if (i > 0) { NodeEntity n = p.GetChildren()[i].Clone(); p.GetChildren().RemoveAt(i); p.GetChildren().Insert(i - 1, n); Refresh(); return; } } } }
private int TailDepth(NodeEntity arg) { int ret = arg.GetDepth(); foreach (NodeEntity c in arg.GetChildren()) { int cd = TailDepth(c); if (ret < cd) { ret = cd; } } return(ret); }
private void Refresh(NodeEntity node) { newDepth++; foreach (NodeEntity c in node.GetChildren()) { c.SetDepth(newDepth); newNodeId++; c.SetNodeID(newNodeId); if (c.GetChildren().Count > 0) { Refresh(c); newDepth--; } } }
private NodeEntity FindByID(NodeEntity node, int id) { foreach (NodeEntity c in node.GetChildren()) { if (c.GetNodeID() == id) { return(c); } NodeEntity ret = FindByID(c, id); if (ret != null) { return(ret); } } return(null); }
private bool IDExists(NodeEntity node, int id) { bool ret = false; foreach (NodeEntity c in node.GetChildren()) { if (c.GetNodeID() == id) { ret = true; } ret = IDExists(c, id); if (ret == true) { return(true); } } return(ret); }