亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? program.cs

?? 高度平衡二叉樹
?? CS
?? 第 1 頁 / 共 2 頁
字號:
                        keyNode.rchild.preNode = tempNode;
                        tempNode.lchild.preNode = keyNode;
                        keyNode.preNode = tempNode;
                        if (keyNode == root)
                        {
                            tempNode.preNode = null;
                            root = tempNode;
                            root.rchild.lchild = null;
                            root.BF = 0;
                            root.lchild.BF = 0;
                            root.rchild.BF = -1;
                        }
                        else
                        {
                            tempNode.preNode = ptrParent;
                            keyNode = tempNode;
                            keyNode.rchild.lchild = null;
                            keyNode.BF = 0;
                            keyNode.lchild.BF = 0;
                            keyNode.rchild.BF = -1;
                        }
                    }
                    else  //RL(R)
                    {
                        Node tempNode = newNode.preNode;
                        tempNode.lchild = keyNode;
                        keyNode.rchild.lchild = tempNode.rchild;
                        tempNode.rchild = keyNode.rchild;
                        keyNode.preNode = tempNode;
                        tempNode.rchild.preNode = keyNode.rchild;
                        keyNode.rchild.preNode = tempNode;
                        if (root == keyNode)
                        {
                            tempNode.preNode = null;
                            root = tempNode;
                            root.lchild.rchild = null;
                            root.BF = 0;
                            root.lchild.BF = 1;
                            root.rchild.BF = 0;
                        }
                        else
                        {
                            tempNode.preNode = ptrParent;
                            keyNode = tempNode;
                            keyNode.lchild.rchild = null;
                            keyNode.BF = 0;
                            keyNode.lchild.BF = 1;
                            keyNode.rchild.BF = 0;
                        }
                    }
                }
            }
            Console.WriteLine("\nAfter:");
            traverse();
        }
        public void find(int Data, ref Node parent, ref Node current)
        {
            index = 0;
            current = root;
            parent = current;
            while ((current != null) && (current.data != Data))
            {
                parent = current;
                if (Data < current.data)
                {
                    current = current.lchild;
                    array[index++] = 1;
                }
                else
                {
                    current = current.rchild;
                    array[index++] = -1;
                }
            }
            array[index] = 0;
        }
        public void traverse()
        {
            Console.Write("InOrder :");
            inOrder(root);
            Console.WriteLine("\nPreOrder:");
            preOrder(root);
            //Console.WriteLine("index:{0}", index + 1);
            //for (int i = 0; i <= index; i++)
            //    Console.Write("{0}  ", array[i]);
        }
        public void inOrder(Node ptr)
        {
            if (root == null)
            {
                Console.WriteLine("The tree is empty!");
                return;
            }
            if (ptr != null)
            {
                inOrder(ptr.lchild);
                Console.Write("{0}  ", ptr.data);
                inOrder(ptr.rchild);
            }
        }
        public void preOrder(Node ptr)
        {
            if (root == null)
            {
                Console.WriteLine("The tree is empty!");
                return;
            }
            if (ptr != null)
            {
                Console.WriteLine("{0}  -   {1}", ptr.data,ptr.BF );
                preOrder(ptr.lchild);
                preOrder(ptr.rchild);
            }
        }
        public void delete()
        {
            Node parent = null, currentNode = null;
            Node delNode=new Node();
            Console.WriteLine("請輸入你要刪除的數:");
            delNode.data  = Convert.ToInt32(Console.ReadLine());
            find(delNode.data , ref parent, ref currentNode);
            int getInfo = delNode.data;
            if (currentNode == null)
            {
                Console.WriteLine("沒有你要刪除的數!");
                return;
            }
            else
            {
                //當要刪除的數是一個葉節點,則有三種情況:
                //1.如果要刪除的數是根節點,則直接將根節點賦值為null
                if ((currentNode.lchild == null) && (currentNode.rchild == null))
                {
                    if (getInfo == root.data)
                    {
                        root = null;
                    }
                    //2.如果要刪除的數是某個父節點的左孩子,將父節點的左指針指向null
                    //3.如果要刪除的數是某個父節點的右孩子,將父節點的右指針指向null
                    if (parent.lchild == currentNode)
                        parent.lchild = null;
                    else
                        parent.rchild = null;
                }
                //當要刪除的節點有孩子時,有二種情況:
                else
                {
                    //(1)有兩個孩子
                    if ((currentNode.lchild != null) & (currentNode.rchild != null))
                    {
                        //從要刪除的節點的右節點開始,查找最左邊的元素,它可以用來替代待刪除節點的位置
                        Node leftMost = currentNode;
                        Node lParent = null;
                        while (leftMost.lchild != null)
                        {
                            lParent = leftMost;
                            leftMost = leftMost.lchild;
                        }
                        currentNode.data = leftMost.data;
                        lParent.lchild = null;
                    }
                    //(2)只有一個孩子
                    else
                    {
                        //有左孩子
                        if (currentNode.lchild != null)
                        {
                            if (parent.lchild == currentNode)
                                parent.lchild = currentNode.lchild;
                            else if (parent.rchild == currentNode)
                                parent.rchild = currentNode.lchild;
                            if (getInfo == root.data)
                            {
                                root = currentNode.lchild;
                            }
                        }
                        //有右孩子
                        else
                        {
                            if (parent.lchild == currentNode)
                                parent.lchild = currentNode.rchild;
                            else if (parent.rchild == currentNode)
                                parent.rchild = currentNode.rchild;
                            if (getInfo == root.data)
                            {
                                root = currentNode.rchild;
                            }
                        }
                    }
                }
            }
            Node ptr = parent;
            int i = index - 1;
            while (ptr != null)
            {
                ptr.BF -= array[i--];
                if (ptr.BF == 0)
                {
                    Console.WriteLine("It is a balanced tree !");
                    return;
                }
                else if ((ptr.BF != 0) && (ptr.BF != 1) && (ptr.BF != -1))
                {
                    Console.WriteLine("Not balanced !");
                    balance(ptr, delNode );
                    return;
                }
                ptr = ptr.preNode;
            }
            Console.WriteLine("It is a balanced tree!");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            BalancedTree bt = new BalancedTree();
            Console.WriteLine("1.insert");
            Console.WriteLine("2.delete");
            Console.WriteLine("3.traverse");
            Console.WriteLine("4.exit");

            while (true)
            {
                Console.Write("\nYour choice:");
                int choice = Convert.ToInt32(Console.ReadLine());
                switch (choice)
                {
                    case 1:
                        {
                            bt.insert();
                            break;
                        }
                    case 2:
                        {
                            bt.delete();
                            break;
                        }
                    case 3:
                        {
                            bt.traverse();
                            break;
                        }
                    case 4:
                        {
                            System.Environment.Exit(0);
                            break;
                        }
                }
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看日本不卡| 国产精品18久久久| **性色生活片久久毛片| 国产亚洲美州欧州综合国| 欧美一二三区精品| 欧美视频一二三区| 欧美视频中文一区二区三区在线观看| 91丨porny丨首页| 99久久er热在这里只有精品66| 国内精品伊人久久久久av影院| 国内精品久久久久影院一蜜桃| 美腿丝袜亚洲综合| 国产91精品精华液一区二区三区| 国产精品一卡二| 99久久99久久精品免费看蜜桃| 99久久久无码国产精品| 日本久久一区二区| 欧美日韩精品专区| 日韩午夜在线观看视频| 久久一区二区三区国产精品| 国产区在线观看成人精品| 国产欧美一区二区精品性色 | 蜜桃视频第一区免费观看| 免费高清不卡av| 成熟亚洲日本毛茸茸凸凹| 99久久亚洲一区二区三区青草| 欧美午夜一区二区三区免费大片| 这里只有精品99re| 国产精品视频一二三区| 亚洲高清在线精品| 国产一区二区三区久久悠悠色av| 高清视频一区二区| 欧美日韩在线播放三区四区| 日韩欧美国产系列| 亚洲欧美日韩中文播放| 日本中文字幕不卡| 成人动漫精品一区二区| 67194成人在线观看| 欧美激情资源网| 水蜜桃久久夜色精品一区的特点 | 在线观看不卡视频| 精品999在线播放| 一区二区三区资源| 国产综合久久久久影院| 欧美亚洲综合久久| 国产欧美日韩激情| 免费观看在线色综合| 99re成人在线| 国产清纯在线一区二区www| 亚洲一区二区三区在线看| 国产九色sp调教91| 欧美精品九九99久久| 国产精品久久久久久久午夜片| 午夜久久久久久久久| 91天堂素人约啪| 久久精品日产第一区二区三区高清版| 亚洲444eee在线观看| 不卡一区二区三区四区| 久久中文字幕电影| 美女视频第一区二区三区免费观看网站 | 欧洲精品在线观看| 一区在线观看免费| 成人综合在线观看| 久久久久久毛片| 蜜桃视频在线一区| 欧美一级生活片| 日韩在线一区二区三区| 色94色欧美sute亚洲线路二| 国产精品久久久久一区| 成人av电影在线网| 亚洲国产精品黑人久久久| 国产一区二区美女诱惑| 欧美成人video| 蜜桃av噜噜一区| 精品国产伦一区二区三区免费| 免费成人小视频| 日韩午夜精品视频| 蜜桃视频一区二区三区| 日韩欧美另类在线| 裸体一区二区三区| 91精品国产入口| 日韩制服丝袜av| 日韩写真欧美这视频| 国产又黄又大久久| 久久精品综合网| 成人精品免费看| 国产精品三级av| jizzjizzjizz欧美| 亚洲欧美一区二区三区孕妇| 一本一本大道香蕉久在线精品| 中文字幕在线观看一区| 色噜噜狠狠色综合中国| 亚洲综合激情网| 欧美三级电影精品| 高清不卡在线观看| 亚洲成人精品影院| 久久成人18免费观看| 日韩你懂的在线观看| 国产美女主播视频一区| 国产精品污污网站在线观看| 色成年激情久久综合| 亚洲一区二区在线观看视频| 在线电影院国产精品| 激情成人午夜视频| 亚洲乱码国产乱码精品精小说| 欧美亚洲禁片免费| 国产一区二区在线免费观看| 国产精品久久久久久久久免费樱桃| 欧美视频完全免费看| 另类小说图片综合网| 亚洲欧美日韩在线| 日韩网站在线看片你懂的| 成人激情小说网站| 免费成人小视频| 亚洲精品视频免费观看| 精品久久免费看| 欧美日韩在线三级| 国产成都精品91一区二区三| 天堂一区二区在线| 国产精品毛片a∨一区二区三区| 精品视频在线看| 成人丝袜视频网| 人人爽香蕉精品| 亚洲一区在线观看免费| 国产区在线观看成人精品| 91麻豆精品国产无毒不卡在线观看| 国产999精品久久久久久绿帽| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕一区二区三区在线播放| 日韩一区二区在线免费观看| 色吧成人激情小说| 成人精品一区二区三区四区| 国产在线一区二区综合免费视频| 亚洲国产精品精华液网站| 国产精品三级av在线播放| 久久久无码精品亚洲日韩按摩| 欧美日韩国产在线观看| 91精品福利视频| 99精品欧美一区| 91在线视频播放地址| 国产精品99久久不卡二区| 奇米色777欧美一区二区| 亚洲成av人**亚洲成av**| 亚洲精品国产一区二区三区四区在线| 国产香蕉久久精品综合网| 日韩免费视频线观看| 日韩一区二区精品| 在线成人免费观看| 欧美久久久久久久久久 | 亚洲免费伊人电影| 国产欧美一区二区精品性色 | 在线成人免费视频| 欧美精品粉嫩高潮一区二区| 欧美三级视频在线观看| 欧美日韩国产片| 欧美理论在线播放| 7777精品久久久大香线蕉| 欧美精品在线一区二区三区| 欧美日韩国产中文| 日韩视频在线永久播放| 久久品道一品道久久精品| 久久欧美中文字幕| 久久精品人人做人人爽人人 | 在线欧美小视频| 在线观看视频一区二区| 色婷婷久久久亚洲一区二区三区| 色综合天天性综合| 欧美无砖砖区免费| 欧美一区二区视频观看视频| 精品国产乱码久久久久久久| 久久综合狠狠综合| 国产精品久久久久aaaa| 亚洲精品你懂的| 日韩黄色免费电影| 美国精品在线观看| 高清av一区二区| 在线观看日韩电影| 日韩免费高清视频| 国产精品视频一区二区三区不卡| 亚洲精品久久7777| 韩国欧美国产一区| 91亚洲国产成人精品一区二区三 | 成人高清视频在线观看| 91电影在线观看| 精品国产免费人成在线观看| 中文字幕在线不卡一区二区三区 | 国产精品自在在线| 91日韩在线专区| 欧美草草影院在线视频| 一色桃子久久精品亚洲| 麻豆精品新av中文字幕| 91影院在线免费观看| 日韩精品资源二区在线| 中文字幕一区二区三区色视频| 日韩激情中文字幕| 色综合久久天天| 国产日产亚洲精品系列| 欧美aaa在线| 91福利精品视频| 国产精品久久久久桃色tv|