{"id":1259,"date":"2020-05-01T10:50:24","date_gmt":"2020-05-01T16:50:24","guid":{"rendered":"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/?post_type=project&#038;p=1259"},"modified":"2020-05-01T11:06:17","modified_gmt":"2020-05-01T17:06:17","slug":"estructura-de-datos-y-algoritmos-iii","status":"publish","type":"project","link":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/project\/estructura-de-datos-y-algoritmos-iii\/","title":{"rendered":"Estructura de datos y algoritmos"},"content":{"rendered":"<p><div class=\"et_d4_element et_pb_section et_pb_section_0  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_0  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_0  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_post_title et_pb_post_title_0 et_pb_bg_layout_dark  et_pb_text_align_center et_pb_featured_bg\"   >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_title_container\">\n\t\t\t\t\t<h1 class=\"entry-title\"><\/h1>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h5 style=\"text-align: center\"><em><strong>Competencias: <\/strong><\/em><em>Aplicar modelos y tecnolog\u00edas para el desarrollo de software utilizando principios de la ingenier\u00eda de software.<\/em><\/h5><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_1  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_1  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_1  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h1 style=\"text-align: center\">Estructuras de datos como<\/h1>\n<h4 style=\"text-align: center\">Binary Search Tree (BST) y High Binary Left Tree (HBLT)<\/h4><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_row et_pb_row_2  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_1_2 et_pb_column et_pb_column_2  et_pb_css_mix_blend_mode et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">import java.util.Queue;\r\nimport java.util.LinkedList;\r\npublic class BST\r\n{\r\n    private NodoBST raiz;\r\n    private NodoBST tmp;\r\n    private NodoBST ant;\r\n    public BST(NodoBST nuevo){\r\n        if(raiz==null){\r\n            raiz = nuevo;\r\n        }\r\n    }\r\n\r\n    public BST(int arr[]){\r\n        for(int i=0; i&lt;arr.length; i++){\r\n            insertar(new NodoBST(arr[i]));\r\n        }\r\n    }\r\n\r\n    public NodoBST getRaiz(){\r\n        return raiz;\r\n    }\r\n\r\n    public void setRaiz(NodoBST raiz){\r\n        this.raiz = raiz;\r\n    }\r\n\r\n    public void insertar(NodoBST nuevo){\r\n        if(raiz==null){\r\n            raiz=nuevo;\r\n        } else{\r\n            NodoBST temporal = raiz;\r\n            while(true){\r\n                if(nuevo.getInfo()&lt;temporal.getInfo()){\r\n                    if(temporal.getPunteroI()!=null){\r\n                        temporal=temporal.getPunteroI();\r\n                    } else{\r\n                        temporal.setPunteroI(nuevo);\r\n                        break;\r\n                    }\r\n                }else{\r\n                    if(temporal.getPunteroD()!=null){\r\n                        temporal=temporal.getPunteroD();\r\n                    } else{\r\n                        temporal.setPunteroD(nuevo);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public void recPreOrden(NodoBST raiz){\r\n        if(raiz!=null){\r\n            System.out.println(raiz.getInfo());\r\n            recPreOrden(raiz.getPunteroI());\r\n            recPreOrden(raiz.getPunteroD());\r\n        }\r\n    }\r\n\r\n    public void recOrden(NodoBST raiz){\r\n        if(raiz!=null){\r\n            recOrden(raiz.getPunteroI());\r\n            System.out.println(raiz.getInfo());\r\n            recOrden(raiz.getPunteroD());\r\n        }\r\n    }\r\n\r\n    public void recPosOrden(NodoBST raiz){\r\n        if(raiz!=null){\r\n            recPosOrden(raiz.getPunteroI());\r\n            recPosOrden(raiz.getPunteroD());\r\n            System.out.println(raiz.getInfo());\r\n        }\r\n    }\r\n\r\n    public void recNivel(){\r\n        Queue&lt;NodoBST&gt; cola = new LinkedList&lt;NodoBST&gt;();\r\n        NodoBST tmp = raiz;\r\n        cola.offer(tmp);\r\n        while(!cola.isEmpty()){\r\n            tmp = cola.poll();\r\n            System.out.println(tmp.getInfo());\r\n            if(tmp.getPunteroI()!=null){\r\n                cola.offer(tmp.getPunteroI());\r\n            }\r\n            if(tmp.getPunteroD()!=null){\r\n                cola.offer(tmp.getPunteroD());\r\n            }\r\n        }\r\n    }\r\n\r\n    private int grado(NodoBST nodo){\r\n        int cont = 0;\r\n        if(nodo.getPunteroI()!=null){\r\n            cont++;\r\n        }\r\n        if(nodo.getPunteroD()!=null){\r\n            cont++;\r\n        }\r\n        return cont;\r\n    }\r\n\r\n    public NodoBST buscar(int num){\r\n        NodoBST tmp = raiz;\r\n        while(tmp!=null){\r\n            if(tmp.getInfo()==num){\r\n                return tmp;\r\n            }else if(num&lt;tmp.getInfo()){\r\n                ant = tmp;\r\n                tmp = tmp.getPunteroI();\/\/busca a la izq\r\n            } else{\r\n                ant = tmp;\r\n                tmp = tmp.getPunteroD();\/\/busca a la der\r\n            }\r\n        }\r\n        return tmp;\r\n    }\r\n    \r\n    public NodoBST eliminaGrado0(int num){\r\n        NodoBST eliminado = buscar(num);\r\n        if(eliminado==raiz){\r\n            raiz = null;\r\n        }else if(ant.getPunteroI().getInfo()==num){\r\n            ant.setPunteroI(null);\r\n        }else if(ant.getPunteroD().getInfo()==num){\r\n            ant.setPunteroD(null);\r\n        }\r\n        return eliminado;\r\n    }\r\n    \r\n    public NodoBST eliminaGrado1(int num){\r\n        NodoBST eliminado = buscar(num);\r\n        if(eliminado.getPunteroI()!=null){\r\n            tmp = eliminado.getPunteroI();\r\n        }else if(eliminado.getPunteroD()!=null){\r\n            tmp = eliminado.getPunteroD();\r\n        }\r\n        \/\/tmp = hijo del eliminado\r\n        if(eliminado==raiz){\r\n            raiz = tmp;\r\n        }else if(ant.getPunteroI().getInfo()==num){\r\n            ant.setPunteroI(tmp);\r\n        }else if(ant.getPunteroD().getInfo()==num){\r\n            ant.setPunteroD(tmp);\r\n        }\r\n        eliminado.setPunteroI(null);\r\n        eliminado.setPunteroD(null);\r\n        return eliminado;\r\n    }\r\n    \r\n    public NodoBST eliminaGrado2(int num){\r\n        NodoBST eliminado = buscar(num);\r\n        tmp = eliminado.getPunteroI();\r\n        while(tmp.getPunteroD()!=null){\r\n            tmp = tmp.getPunteroD();\r\n        }\r\n        if(eliminado==raiz){\r\n            raiz = tmp;\r\n        }else if(ant.getPunteroI().getInfo()==num){\r\n            ant.setPunteroI(tmp);\r\n        }else if(ant.getPunteroD().getInfo()==num){\r\n            ant.setPunteroD(tmp);\r\n        }\r\n        if(eliminado.getPunteroI()!=tmp){\r\n            tmp.setPunteroI(eliminado.getPunteroI());\r\n        }\r\n        if(eliminado.getPunteroD()!=tmp){\r\n            tmp.setPunteroD(eliminado.getPunteroD());\r\n        }\r\n        eliminado.setPunteroI(null);\r\n        eliminado.setPunteroD(null);\r\n        return eliminado;\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_d4_element et_pb_column_1_2 et_pb_column et_pb_column_3  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">import java.util.Queue;\r\nimport java.util.LinkedList;\r\n\/**\r\n * High Binary Left Tree\r\n *\/\r\npublic class HBLT\r\n{\r\n    private Queue&lt;NodoL&gt; cola = new LinkedList&lt;NodoL&gt;();\r\n    public HBLT(int [] arr){\r\n        for(int num : arr){\r\n            NodoL nodo = new NodoL(num);\r\n            nodo.setS(1);\r\n            nodo.setPtrI(new NodoL());\r\n            nodo.setPtrD(new NodoL());\r\n            cola.offer(nodo);\r\n        }\r\n    }\r\n    public NodoL acomodarMayorPrecedencia(){\r\n        while(cola.size()&gt;1){\r\n            NodoL nodo1 = cola.poll();\r\n            NodoL nodo2 = cola.poll();\r\n            NodoL nodoAux;\r\n            if(nodo1.getInfo()&lt;nodo2.getInfo()){\r\n                nodoAux = nodo1;\r\n                nodo1 = nodo2;\r\n                nodo2 = nodoAux;\r\n            }\r\n            if(nodo1.getPtrD().getInfo()==0){\r\n                nodo1.setPtrD(nodo2);\r\n            }else if(nodo1.getPtrD().getInfo()&gt;nodo2.getInfo()){\r\n                nodo1.getPtrD().setPtrD(nodo2);\r\n            }else{\r\n                nodoAux = nodo1.getPtrD();\r\n                NodoL raiz = nodo1;\r\n                while(nodo2.getInfo()&gt;nodoAux.getInfo()){\r\n                    nodo1.setPtrD(nodo2);\r\n                    nodo1 = nodo2;\r\n                    nodo2 = nodo1.getPtrD();\r\n                    nodo2.setS();\r\n                    nodo1.setS();\r\n                }\r\n                nodo1.setPtrD(nodoAux);\r\n                nodoAux.setPtrD(nodo2);\r\n                nodo2.setS();\r\n                nodoAux.setS();\r\n                nodo1.setS();\r\n                if(nodo1.getPtrI().getS()&lt;nodo1.getPtrD().getS()){\r\n                    nodoAux = nodo1.getPtrI();\r\n                    nodo1.setPtrI(nodo1.getPtrD());\r\n                    nodo1.setPtrD(nodoAux);\r\n                    nodoAux.setS();\r\n                }\r\n                nodo1 = raiz;\r\n            }\r\n            if(nodo1.getPtrI().getS()&lt;nodo1.getPtrD().getS()){\r\n                nodoAux = nodo1.getPtrI();\r\n                nodo1.setPtrI(nodo1.getPtrD());\r\n                nodo1.setPtrD(nodoAux);\r\n                nodoAux.setS();\r\n            }\r\n            nodo2.setS();\r\n            nodo1.setS();\r\n            cola.offer(nodo1);\r\n        }\r\n        return cola.poll();\r\n    }\r\n    public NodoL acomodarMenorPrecedencia(){\r\n        while(cola.size()&gt;1){\r\n            NodoL nodo1 = cola.poll();\r\n            NodoL nodo2 = cola.poll();\r\n            NodoL nodoAux;\r\n            if(nodo1.getInfo()&gt;nodo2.getInfo()){\r\n                nodoAux = nodo1;\r\n                nodo1 = nodo2;\r\n                nodo2 = nodoAux;\r\n            }\r\n            if(nodo1.getPtrD().getInfo()==0){\r\n                nodo1.setPtrD(nodo2);\r\n            }else if(nodo1.getPtrD().getInfo()&lt;nodo2.getInfo()){\r\n                nodo1.getPtrD().setPtrD(nodo2);\r\n            }else{\r\n                nodoAux = nodo1.getPtrD();\r\n                NodoL raiz = nodo1;\r\n                while(nodo2.getInfo() != 0 &amp;&amp; nodo2.getInfo()&lt;nodoAux.getInfo()){\r\n                    nodo1.setPtrD(nodo2);\r\n                    nodo1 = nodo2;\r\n                    nodo2 = nodo1.getPtrD();\r\n                    nodo2.setS();\r\n                    nodo1.setS();\r\n                }\r\n                nodo1.setPtrD(nodoAux);\r\n                nodoAux.setPtrD(nodo2);\r\n                nodo2.setS();\r\n                nodoAux.setS();\r\n                nodo1.setS();\r\n                if(nodo1.getPtrI().getS()&lt;nodo1.getPtrD().getS()){\r\n                    nodoAux = nodo1.getPtrI();\r\n                    nodo1.setPtrI(nodo1.getPtrD());\r\n                    nodo1.setPtrD(nodoAux);\r\n                    nodoAux.setS();\r\n                }\r\n                nodo1 = raiz;\r\n            }\r\n            if(nodo1.getPtrI().getS()&lt;nodo1.getPtrD().getS()){\r\n                nodoAux = nodo1.getPtrI();\r\n                nodo1.setPtrI(nodo1.getPtrD());\r\n                nodo1.setPtrD(nodoAux);\r\n                nodoAux.setS();\r\n            }\r\n            nodo2.setS();\r\n            nodo1.setS();\r\n            cola.offer(nodo1);\r\n        }\r\n        return cola.poll();\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_2  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_3  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_4  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h3>Reflexi\u00f3n<\/h3>\n<p>Una estructura de datos\u00a0es una forma particular de organizar datos en una computadora para que puedan ser utilizados de manera eficiente. Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de\u00a0aplicaciones, y algunos son altamente especializados para tareas espec\u00edficas.<\/p>\n<p>Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes\u00a0bases de datos\u00a0y servicios de indizaci\u00f3n de\u00a0Internet.\u00a0<\/p>\n<p>Las diferentes estructuras de datos nos proporcionan un orden y un enlace entre todos los datos. Ejemplo m\u00e1s sencillos de estas estructiras son arrays, vectores, matrices; m\u00e1s complejos: Listas enlazadas(simples, dobles, circulares), pilas , colas , \u00e1rboles binarios, entre otros.<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":18,"featured_media":1041,"comment_status":"open","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"project_category":[22],"project_tag":[],"class_list":["post-1259","project","type-project","status-publish","has-post-thumbnail","hentry","project_category-portafolio-iii"],"_links":{"self":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project\/1259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project"}],"about":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/types\/project"}],"author":[{"embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/comments?post=1259"}],"version-history":[{"count":6,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project\/1259\/revisions"}],"predecessor-version":[{"id":1275,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project\/1259\/revisions\/1275"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/media\/1041"}],"wp:attachment":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/media?parent=1259"}],"wp:term":[{"taxonomy":"project_category","embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project_category?post=1259"},{"taxonomy":"project_tag","embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project_tag?post=1259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}