Efficiënte data structuren te optimaliseren prestaties van een programma door het gemakkelijker voor het programma om de gegevens die zij nodig vinden . Binary search bomen zijn een van de meest efficiënte datastructuren voor doorzoeken van een geordende dataset . Of uw data structuur is een georganiseerde binary - search boom of een standaard binaire boom , kunt u de hoogte van de boom op Java te vinden door middel van een eenvoudige recursieve functie . Boom Structuur Een binaire boom bestaat uit een set van onderling verbonden knooppunten . Elk knooppunt heeft tussen nul en twee onderliggende knooppunten . Elk knooppunt met uitzondering van het hoofdknooppunt precies een bovenliggende knooppunt . De wortel node geen bovenliggende knooppunten . Java heeft geen ingebouwde binaire boom klasse , maar u kunt uw eigen te maken vanuit het niets of download er een van internet . Boom Hoogte De hoogte van een binaire boom is het maximale aantal knooppunten , niet met root -knooppunt , langs een enkele verticale traversal via de binaire boom . Bijvoorbeeld , zou een binaire boom met slechts een knooppunt een hoogte hebben van nul . Een binaire boom met een wortel knooppunt met twee onderliggende knooppunten zou een hoogte van een te hebben . Als een van die onderliggende knooppunten had zijn eigen onderliggende node , zou de boom een hoogte van drie hebben . Theorie De eenvoudigste manier om de hoogte te bepalen van een binaire boom in Java is met een iteratieve methode . Deze methode accepteert een knooppunt als argument en retourneert de hoogte van de binaire boom onder het argument knooppunt . Werkwijze dringt zich opnieuw voor elke stelling knooppunt childnodes en slaat het resultaat als een integer variabele . Het vergelijkt de twee variabelen die de hoogte van elk van zijn kinderen vertegenwoordigen , voegt men aan de grootste van de twee variabelen en geeft het resultaat . Als het argument knooppunt aan de methode doorgegeven null is , retourneert de methode negatieve. Algoritme De volgende Java- methode zal de hoogte van een binaire boom te berekenen . Het accepteert de wortel knooppunt van een binaire boom als argument . Als alternatief zou je een ander knooppunt van de binaire boom overgaan in de methode om de hoogte van de boom onder dat knooppunt vinden . De volgende code wordt aangenomen dat elke knoop van de binaire boom van het type " BinaryTreeNode " en elk knooppunt bevat methoden die de linker en rechter kinderen die node " getLeftChild " en terugkeren " getRightChild . " private int findHeight ( BinaryTreeNode currentNode ) { if ( currentNode.equals ( null) ) { return -1 ; } int leftHeight = findHeight ( currentNode.getLeftChild ( ) ) ; int Rightheight = findHeight ( currentNode.getRightChild ( ) ) ; int greatestHeight = Math.max ( leftHeight , Rightheight ) ; return greatestHeight ; }
|