Exemplo n.º 1
0
        public FPTree CreateTree()
        {
            FPTree tree = new FPTree();

            tree.root      = new Node();
            tree.arrayNode = new List <Node>(); //new Node[999999];
            tree.countNode = 0;
            return(tree);
        }
Exemplo n.º 2
0
        public FPTree InsertNode(FPTree tree, List list)
        {
            int  i    = 0;
            Node root = new Node();

            root = tree.root;
            Node node = new Node();

            node = list.pHead;
            while (node != null)
            {
                bool flag = false;
                // tìm rtrong root có itemName nào trùng với node.itemName không?
                for (i = 0; i < root.nodeChildrens.Length; i++)
                {
                    if (root.nodeChildrens[i] != null)
                    {
                        if (root.nodeChildrens[i].itemName == node.itemName)
                        {
                            flag = true;
                            break;
                        }
                    }
                }
                // nếu tìm thấy thì tăng cout của itemName đó lên 1
                if (flag == true)
                {
                    root.nodeChildrens[i].count += 1;
                    if (node.nodeChild != null && node.nodeChild.nodeParent != null)
                    {
                        node.nodeChild.nodeParent = root.nodeChildrens[i];
                    }
                }
                // ngược lại tạo node mới
                else
                {
                    node.nodeParent = root;
                    node.count     += 1;
                    tree.countNode += 1;
                    // gán node là con của root
                    for (i = 0; i < root.nodeChildrens.Length; i++)
                    {
                        if (root.nodeChildrens[i] == null)
                        {
                            root.nodeChildrens[i] = node;
                            break;
                        }
                    }
                    tree.arrayNode.Add(node);
                }
                if (node.nodeChild == null)
                {
                    root = node;
                }
                else
                {
                    root = node.nodeChild.nodeParent;
                }
                node = node.nodeChild;
            }
            return(tree);
        }