Java 平衡二叉树初实现

Java 平衡二叉树初实现

(12.21.12)之前有人问到排序不正确的问题,是因为String.compareTo(String)是由左至右按逐个字符ASCII码大小排序的,香港虚拟主机,所以10比9小。

要区分数字和字符串,虚拟主机,可参考以下代码

compare(String s1, String s2) { 3Pattern pattern = Pattern.compile(“[0-9]*”); 4if ( pattern.matcher(s1).matches() && pattern.matcher(s2).matches()) { 5long a = Long.parseLong(s1); 6long b = Long.parseLong(s2); 7if ( a < b) ;;10 } ( pattern.matcher(s1).matches() ); ( pattern.matcher(s2).matches() );( s1.compareTo(s2) < 0);;21}

1 package AVLTree; 2 import javax.swing.*; 3 import java.awt.*; 4 import java.io.*; 5 import java.util.Scanner; Tree {balFactor; leftHigher = 1;equalHigh = 0;rightHigher = -1; 14private Tree LChild, RChild;head = true; taller;Tree Parent; leftChildRecord; Tree(String exampleData) { 22this.data = exampleData; 23this.balFactor = 0; 24this.LChild = null; 25this.RChild = null; 26 } insertTree(Tree T, String keyData) {(this.head) { 31T.data = keyData; 32this.taller = true; 33this.head = false; 34 } (T == null) {Parent.LChild = new Tree(keyData); 40 }Parent.RChild = new Tree(keyData); 43 } 44this.taller = true; 45 } { .taller = false;; 52 }(keyData.compareTo(T.data) < 0) {Parent = T; 56leftChildRecord = true; 57if (insertTree(T.LChild, keyData) == false) {; 60 }(this.taller) {leftHigher:LeftBalance(T); 65this.taller = false; 66break;T.balFactor = leftHigher; .taller = true; 70break;T.balFactor = equalHigh;.taller = false; 74break; 75 } 76 } 77 }Parent = T; 80leftChildRecord = false; 81if (insertTree(T.RChild, keyData) == false) {; 83 }(this.taller) { 85switch (T.balFactor) { 86case leftHigher: 87T.balFactor = equalHigh; 88this.taller = false; 89break; 90case equalHigh: 91T.balFactor = rightHigher; 92this.taller = true; 93break; 94case rightHigher: 95 RightBalance(T); 96this.taller = false; 97break; 98 } 99 }100 }101 };103 } RightRotate (Tree T) {107 Tree LeftKid;LeftKid = T.LChild;T.LChild = LeftKid.LChild;LeftKid.LChild = LeftKid.RChild;LeftKid.RChild = T.RChild;T.RChild = LeftKid;//114t = T.data; T.data = LeftKid.data; LeftKid.data = t;115 } LeftRotate (Tree T) {119 Tree RightKid;120 String t;121RightKid = T.RChild;122T.RChild = RightKid.RChild;123RightKid.RChild = RightKid.LChild;124RightKid.LChild = T.LChild;125T.LChild = RightKid;126t = T.data; T.data = RightKid.data; RightKid.data = t;127 } LeftBalance ( Tree T) {131 Tree LeftSubTree, LChildRightSubTree;132LeftSubTree = T.LChild; (LeftSubTree.balFactor) {T.balFactor = equalHigh;137LeftSubTree.balFactor = equalHigh;138 RightRotate(T);139break;rightHigher:LChildRightSubTree = LeftSubTree.RChild; (LChildRightSubTree.balFactor) {T.balFactor = rightHigher;147LeftSubTree.balFactor = equalHigh;148break; equalHigh:151T.balFactor = equalHigh;152LeftSubTree.balFactor = equalHigh;153break; rightHigher:156T.balFactor = equalHigh;157LeftSubTree.balFactor = leftHigher;158break;159 }LeftRotate(T.LChild); RightRotate(T);}165 } RightBalance ( Tree T) { 169 Tree RightSubTree, RChildLeftSubTree;170RightSubTree = T.RChild;171switch (RightSubTree.balFactor) {172case rightHigher: 173T.balFactor = equalHigh;174RightSubTree.balFactor = equalHigh;175 LeftRotate(T);176break; leftHigher:179RChildLeftSubTree = RightSubTree.LChild;180switch (RChildLeftSubTree.balFactor) {181case rightHigher: 182T.balFactor = leftHigher;183RightSubTree.balFactor = equalHigh;184break;185case equalHigh:186T.balFactor = equalHigh;187RightSubTree.balFactor = equalHigh;188break;189case leftHigher:190T.balFactor = equalHigh;191RightSubTree.balFactor = rightHigher;192break;193 }194RChildLeftSubTree.balFactor = equalHigh;195 RightRotate(T.RChild);196 LeftRotate(T);197 }198 } middle(Tree T) {203if (T == null) {204return;205 }206 middle(T.LChild);207 System.out.println(T.data);208 middle(T.RChild);209 }main(String[] args) throws IOException {213Tree Free = new Tree(null);FileReader fr=BufferedReader in=String line;218while((line=in.readLine()) != null) {219String[] str=line.split(” “);220for (int i = 0; i < str.length; i++) {221 Free.insertTree(Free, str[i]);222 }223 }224 in.close();225 Free.middle(Free);226 }227228 }

posted on

,香港服务器租用最困难之时,就是我们离成功不远之日。

Java 平衡二叉树初实现

相关文章:

你感兴趣的文章:

标签云: