如約定一樣,今天放出分詞程序的 數據插入代碼
首先,我們需要有一個方法查詢當前字符在這棵樹的地方,如果不存在返回-1,存在返回該記錄的索引。
每個字符只到每一層上存在一次


/**//// <summary>

/// 得到關鍵詞ID號

/// </summary>

/// <param name="tmpRoot">支點</param>

/// <param name="NoteValue">結點值</param>

/// <returns>ID號</returns>

private int FindIndex(List<KeyWordTreeNode> tmpRoot, char NoteValue)


...{

if (tmpRoot.Count == 0) return -1;

KeyWordTreeNode TmpNode = tmpRoot[0];


for (int iCount = 0; iCount < tmpRoot.Count; iCount++)


...{

if (NoteValue ==tmpRoot [iCount ].TreeNode ) return iCount;

}

return -1;


}
下面是插入數據的源代碼

/**//// <summary>

/// 添加如關鍵詞

/// </summary>

/// <param name="keyWord">關鍵詞</param>

public void AddKeyWord(string keyWord)


...{

List<KeyWordTreeNode> tmpRoot = Root.ChildList;

for (int iCount = 0; iCount < keyWord.Length; iCount++)


...{

int tmpIndex = FindIndex(tmpRoot, keyWord[iCount]);

if (tmpIndex == -1)


...{

KeyWordTreeNode tmpTreeNode = new KeyWordTreeNode(keyWord[iCount]);

tmpRoot.Add (tmpTreeNode);

tmpRoot = tmpTreeNode.ChildList;

}

; else


...{

tmpRoot = tmpRoot[tmpIndex].ChildList;

}


}


}
插入的基本思路是:
1、查找當前層是否存在首字符。
2、如果不存在,添加。
3、如果存在,得到索引,並把對象指向該索引的子樹,繼續查找下一個字符。
4、如果字符串還沒結束,跳到第一步繼續查詢。
以上代碼都放在昨天的KeyWordTree類裡。明天再放出查找的代碼。大家也可以先嘗試著做一下。