程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C# 一個簡單分詞程序的思路和代碼(三) 鍵樹 插入記

C# 一個簡單分詞程序的思路和代碼(三) 鍵樹 插入記

編輯:.NET實例教程

如約定一樣,今天放出分詞程序的 數據插入代碼

首先,我們需要有一個方法查詢當前字符在這棵樹的地方,如果不存在返回-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類裡。明天再放出查找的代碼。大家也可以先嘗試著做一下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved