public void Delete() { if (mLeftChild != null) { mLeftChild.Delete(); } if (mRightChild != null) { mRightChild.Delete(); } mValue = 0; mLeftChild = null; mRightChild = null; }
public void SetData(List <List <int> > pDataList) { if (mRoot != null) { mRoot.Delete(); } List <TriTreeNode> lineNodeList = new List <TriTreeNode>(2); List <TriTreeNode> lineNodeChildList = new List <TriTreeNode>(2); for (int i = pDataList.Count - 1; i >= 0; --i) { lineNodeList.Clear(); // 맨 아래부터 데이터를 만들어준다. for (int j = 0; j < pDataList[i].Count; ++j) { lineNodeList.Add(new TriTreeNode((uint)i, (uint)j, pDataList[i][j])); } // 아래 리스트의 데이터를 상위 리스트의 데이터의 자식으로 넣어준다. for (int j = 0; j < lineNodeList.Count && j < lineNodeChildList.Count; ++j) { lineNodeList[j].SetLeftChild(lineNodeChildList[j]); lineNodeList[j].SetRightChild(lineNodeChildList[j + 1]); } // 리스트 복사 lineNodeChildList.Clear(); for (int j = 0; j < lineNodeList.Count; ++j) { lineNodeChildList.Add(lineNodeList[j]); } } if (lineNodeList.Count != 1) { Console.WriteLine("Wrong Data Setting !!"); } mRoot = lineNodeList[0]; }