Esempio n. 1
0
        public void Delete()
        {
            if (mLeftChild != null)
            {
                mLeftChild.Delete();
            }
            if (mRightChild != null)
            {
                mRightChild.Delete();
            }

            mValue      = 0;
            mLeftChild  = null;
            mRightChild = null;
        }
Esempio n. 2
0
    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];
    }