基本数据结构之BinarySearchTree
生活随笔
收集整理的這篇文章主要介紹了
基本数据结构之BinarySearchTree
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
問(wèn)題描述:?
BinarySearchTree
問(wèn)題分析:?
基本的實(shí)現(xiàn)
代碼實(shí)現(xiàn):
package?c04; /***?@project:?DataStructureAndAlgorithmAnalysis*?@filename:?BinarySearchTree.java*?@version:?0.10*?@author:?JM?Han*?@date:?18:38?2015/10/19*?@comment:?Test?Purpose*?@result:*/import?c02.BinarySearch; import?master.UnderflowException; import?java.util.Comparator; import?static?tool.util.*;public?class?BinarySearchTree<AnyType?extends?Comparable<??super?AnyType>>?{private?static?class?BinaryNode<AnyType>{BinaryNode(AnyType?theElement){this(theElement,?null,?null);}BinaryNode(AnyType?theElement,?BinaryNode<AnyType>?lt,?BinaryNode<AnyType>?rt){element?=?theElement;?left?=?lt;?right?=?rt;}AnyType?element;BinaryNode<AnyType>?left;BinaryNode<AnyType>?right;}private?BinaryNode<AnyType>?root;public?BinarySearchTree(){root?=?null;}public?void?makeEmpty(){root?=?null;}public?boolean?isEmpty(){return?null?==?root;}public?boolean?contains(AnyType?x){return?contains(x,?root);}public?AnyType?findMin(){if(isEmpty())throw?new?UnderflowException();return?findMin(root).element;}public?AnyType?findMax(){if(isEmpty())throw?new?UnderflowException();return?findMax(root).element;}public?void?insert(AnyType?x){root?=?insert(x,?root);}public?void?remove(AnyType?x){root?=?remove(x,?root);}public?void?printTree(){if(isEmpty())System.out.println("Empty?Tree");elseprintTree(root);}private?boolean?contains(AnyType?x,?BinaryNode<AnyType>?t){if(t?==?null)return?false;int?comparableResult?=?x.compareTo(t.element);if(comparableResult?<?0)return?contains(x,?t.left);else?if(comparableResult?>?0)return?contains(x,?t.right)?;elsereturn?true;}private?BinaryNode<AnyType>?findMin(BinaryNode<AnyType>?t){if(null?==?t)return?null;else?if(t.left?==?null)return?t;return?findMin(t.left);}private?BinaryNode<AnyType>?findMax(BinaryNode<AnyType>?t){if(t?!=?null)while(t.right?!=?null)t?=?t.right;return?t;}private?BinaryNode<AnyType>?insert(AnyType?x,?BinaryNode<AnyType>?t){if(null?==?t)return?new?BinaryNode<AnyType>(x,?null,?null);int?compareResult?=?x.compareTo(t.element);if(compareResult?<?0)t.left?=?insert(x,?t.left);else?if(compareResult?>?0)t.right?=?insert(x,?t.right);else;return?t;}private?BinaryNode<AnyType>?remove(AnyType?x,?BinaryNode<AnyType>?t){if(null?==?t)return?t;int?compareResult?=?x.compareTo(t.element);if(compareResult?<?0)t.left?=?remove(x,?t.left);else?if(compareResult?>?0)t.right?=?remove(x,?t.right);else?if(t.left?!=?null?&&?t.right?!=?null){t.element?=?findMin(t.right).element;t.right?=?remove(t.element,?t.right);}elset?=?(t.left?!=?null)?t.left:t.right;return?t;}private?void?printTree(BinaryNode<AnyType>?t){if(null?!=?t){printTree(t.left);System.out.println(t.element);printTree(t.right);}}public?static?void?main(String[]?args)?{BinarySearchTree<Integer>?bst?=?new?BinarySearchTree<Integer>();bst.insert(4);bst.insert(3);bst.insert(6);bst.insert(0);bst.insert(2);bst.insert(3);System.out.println("Contains?3:?"?+?bst.contains(3));System.out.println("Max:?"?+?bst.findMax());System.out.println("Min:?"?+?bst.findMin());bst.remove(3);bst.printTree();} }代碼輸出:
Contains?3:?true Max:?6 Min:?0 0 2 4 6轉(zhuǎn)載于:https://my.oschina.net/jimmyhan/blog/519351
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的基本数据结构之BinarySearchTree的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: x86 和 ARM 谁能主宰服务器市场?
- 下一篇: 超简洁git入门