Beispiel #1
0
    //层次遍历
    //引入队列
    public void LevelOrder(TreeNode <T> root)
    {
        Console.WriteLine("遍历开始:");
        if (root == null)
        {
            Console.WriteLine("没有结点!");
            return;
        }

        TreeNode <T> temp = root;

        CSequeue <TreeNode <T> > queue = new CSequeue <TreeNode <T> >(50);

        queue.Enqueue(temp);
        while (!queue.IsEmpty())
        {
            temp = (TreeNode <T>)queue.Dequeue();
            Console.WriteLine(temp.Data + " ");
            for (int i = 0; i < temp.Childs.Count; i++)
            {
                if (temp.Childs[i] != null)
                {
                    queue.Enqueue(temp.Childs[i]);
                }
            }
        }
        Console.WriteLine("遍历结束!");
    }
Beispiel #2
0
    public void Clear()
    {//待测试;
        TreeNode <T>             temp  = root;
        CSequeue <TreeNode <T> > queue = new CSequeue <TreeNode <T> >();

        queue.Enqueue(temp);
        while (!queue.IsEmpty())
        {
            temp = (TreeNode <T>)queue.Dequeue();
            for (int i = 0; i < temp.Childs.Count; i++)
            {
                queue.Enqueue(temp.Childs[i]);
                temp.Childs.Clear();
            }
        }
        root = null;
    }